-
Notifications
You must be signed in to change notification settings - Fork 51
/
couchbase.rb
102 lines (93 loc) · 2.81 KB
/
couchbase.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Author:: Couchbase <info@couchbase.com>
# Copyright:: 2011, 2012 Couchbase, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
require 'couchbase/version'
require 'multi_json'
require 'ext/multi_json_fix'
require 'yaji'
require 'uri'
require 'couchbase_ext'
require 'couchbase/utils'
require 'couchbase/bucket'
require 'couchbase/view_row'
require 'couchbase/view'
require 'couchbase/result'
# Couchbase ruby client
module Couchbase
class << self
# The method +connect+ initializes new Bucket instance with all arguments passed.
#
# @since 1.0.0
#
# @see Bucket#initialize
#
# @example Use default values for all options
# Couchbase.connect
#
# @example Establish connection with couchbase default pool and default bucket
# Couchbase.connect("http://localhost:8091/pools/default")
#
# @example Select custom bucket
# Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog')
#
# @example Specify bucket credentials
# Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog', :username => 'bucket', :password => 'secret')
#
# @example Use URL notation
# Couchbase.connect("http://bucket:secret@localhost:8091/pools/default/buckets/blog")
#
# @return [Bucket] connection instance
def connect(*options)
Bucket.new(*(options.flatten))
end
alias :new :connect
# Default connection options
#
# @since 1.1.0
#
# @example Using {Couchbase#connection_options} to change the bucket
# Couchbase.connection_options = {:bucket => 'blog'}
# Couchbase.bucket.name #=> "blog"
#
# @return [Hash, String]
attr_accessor :connection_options
# @private the thread local storage
def thread_storage
Thread.current[:couchbase] ||= {}
end
# The connection instance for current thread
#
# @since 1.1.0
#
# @see Couchbase.connection_options
#
# @example
# Couchbase.bucket.set("foo", "bar")
#
# @return [Bucket]
def bucket
thread_storage[:bucket] ||= connect(connection_options)
end
# Set a connection instance for current thread
#
# @since 1.1.0
#
# @return [Bucket]
def bucket=(connection)
thread_storage[:bucket] = connection
end
end
end