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/jruby/future.rb,
lib/couchbase/async/callback.rb,
lib/couchbase/jruby/couchbase_client.rb

Overview

Author

Couchbase <[email protected]>

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.

Defined Under Namespace

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

Constant Summary collapse

VERSION =
'0.1.1'
@@buckets =
Atomic.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"

Since:

  • 1.1.0



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

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]})

See Also:

Since:

  • 1.1.0



122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/couchbase.rb', line 122

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.update { |buckets| buckets[name] ||= connect(connection_options) }
  @@buckets.value[name]
end

.bucket=(connection) ⇒ Bucket

Set a connection instance for current thread

Since:

  • 1.1.0



141
142
143
144
145
# File 'lib/couchbase.rb', line 141

def bucket=(connection)
  name ||= @connection_options && @connection_options[:bucket] || "default"
  @@buckets.update { |buckets| buckets[name] = connection }
  @@buckets.value[name]
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")

See Also:

Since:

  • 1.0.0



70
71
72
73
74
75
# File 'lib/couchbase.rb', line 70

def connect(*options)
  Bucket.new(*(options.flatten))
  # disconnect
  # @@bucket.update { |bucket| bucket ||= Bucket.new(*(options.flatten)) }
  # @@bucket.value
end

.connected?Boolean



147
148
149
# File 'lib/couchbase.rb', line 147

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

.disconnectObject



151
152
153
154
# File 'lib/couchbase.rb', line 151

def disconnect
  @@buckets.value.each(&:disconnect) if connected?
  @@buckets = Atomic.new({})
end