Module: Couchbase

Defined in:
lib/couchbase.rb,
lib/couchbase/view.rb,
lib/couchbase/async.rb,
lib/couchbase/error.rb,
lib/couchbase/query.rb,
lib/couchbase/utils.rb,
lib/couchbase/bucket.rb,
lib/couchbase/result.rb,
lib/couchbase/cluster.rb,
lib/couchbase/version.rb,
lib/couchbase/view_row.rb,
lib/couchbase/constants.rb,
lib/couchbase/design_doc.rb,
lib/couchbase/operations.rb,
lib/couchbase/transcoder.rb,
lib/couchbase/async/queue.rb,
lib/couchbase/async/callback.rb

Overview

Author

Mike Evans <[email protected]>

Copyright

2013 Urlgonomics LLC.

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.

Defined Under Namespace

Modules: Async, Constants, Error, Operations, Transcoder Classes: Bucket, Cluster, DesignDoc, Query, Result, Utils, View, ViewRow

Constant Summary collapse

VERSION =
'0.1.4'
@@buckets =
ThreadSafe::Cache.new

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.connection_optionsHash, String

Default connection options

Examples:

Using connection_options to change the bucket

Couchbase.connection_options = {:bucket => 'blog'}
Couchbase.bucket.name     #=> "blog"

Returns:

  • (Hash, String)

Since:

  • 1.1.0



100
101
102
# File 'lib/couchbase.rb', line 100

def connection_options
  @connection_options
end

Class Method Details

.bucket(name = nil) ⇒ Bucket

The connection instance for current thread

Examples:

Couchbase.bucket.set("foo", "bar")

Set connection options using Hash

Couchbase.connection_options = {:node_list => ["example.com:8091"]}
Couchbase.bucket("slot1").set("foo", "bar")
Couchbase.bucket("slot1").bucket #=> "default"
Couchbase.connection_options[:bucket] = "test"
Couchbase.bucket("slot2").bucket #=> "test"

Set connection options using URI

Couchbase.connection_options = "http://example.com:8091/pools"
Couchbase.bucket("slot1").set("foo", "bar")
Couchbase.bucket("slot1").bucket #=> "default"
Couchbase.connection_options = "http://example.com:8091/pools/buckets/test"
Couchbase.bucket("slot2").bucket #=> "test"

Use named slots to keep a connection

Couchbase.connection_options = {
  :node_list => ["example.com", "example.org"],
  :bucket => "users"
}
Couchbase.bucket("users").set("john", {"balance" => 0})
Couchbase.connection_options[:bucket] = "orders"
Couchbase.bucket("other").set("john:1", {"products" => [42, 66]})

Returns:

See Also:

Since:

  • 1.1.0



143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/couchbase.rb', line 143

def bucket(name = nil)
  name ||= case @connection_options
           when Hash
             @connection_options[:bucket]
           when String
             path = URI.parse(@connection_options).path
             path[%r(^(/pools/([A-Za-z0-9_.-]+)(/buckets/([A-Za-z0-9_.-]+))?)?), 3] || "default"
           else
             'default'
           end

  @@buckets[name] ||= connect(connection_options)
end

.bucket=(connection) ⇒ Bucket

Set a connection instance for current thread

Returns:

Since:

  • 1.1.0



162
163
164
165
# File 'lib/couchbase.rb', line 162

def bucket=(connection)
  name = @connection_options && @connection_options[:bucket] || "default"
  @@buckets[name] = connection
end

.connect(*options) ⇒ Bucket Also known as: new

The method connect initializes new Bucket instance with all arguments passed.

Examples:

Use default values for all options

Couchbase.connect

Establish connection with couchbase default pool and default bucket

Couchbase.connect("http://localhost:8091/pools/default")

Select custom bucket

Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog')

Specify bucket credentials

Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog', :username => 'bucket', :password => 'secret')

Use URL notation

Couchbase.connect("http://bucket:secret@localhost:8091/pools/default/buckets/blog")

Returns:

  • (Bucket)

    connection instance

See Also:

Since:

  • 1.0.0



86
87
88
# File 'lib/couchbase.rb', line 86

def connect(*options)
  Bucket.new(*(options.flatten))
end

.connected?Boolean

Returns:

  • (Boolean)


167
168
169
# File 'lib/couchbase.rb', line 167

def connected?
  !!@@buckets.empty?
end

.disconnectObject



171
172
173
174
175
176
# File 'lib/couchbase.rb', line 171

def disconnect
  @@buckets.each_key do |name|
    bucket = @@buckets.delete(name)
    bucket.disconnect if connected?
  end
end

.normalize_connection_options(options) ⇒ Object



106
107
108
# File 'lib/couchbase.rb', line 106

def normalize_connection_options(options)
  Hash[ options.map { |k, v| [k.to_sym, v] } ]
end