Class: Riak::Bucket
- Inherits:
-
Object
- Object
- Riak::Bucket
- Includes:
- Util::Escape, Util::Translation
- Defined in:
- riak-client/lib/riak/bucket.rb,
riak-client/lib/riak/search.rb
Overview
Represents and encapsulates operations on a Riak bucket. You may retrieve a bucket using Client#bucket, or create it manually and retrieve its meta-information later.
Constant Summary
- SEARCH_PRECOMMIT_HOOK =
The precommit specification for kv/search integration
{"mod" => "riak_search_kv_hook", "fun" => "precommit"}
Instance Attribute Summary (collapse)
-
- (Riak::Client) client
readonly
The associated client.
-
- (String) name
readonly
The bucket name.
Instance Method Summary (collapse)
-
- (true, false) ==(other)
Whether the other is equivalent.
-
- (true, false) allow_mult
Whether the bucket allows divergent siblings.
-
- (Object) allow_mult=(value)
Set the allow_mult property.
-
- (Object) delete(key, options = {})
Deletes a key from the bucket.
-
- (Object) disable_index!
Removes the precommit hook that automatically indexes objects into riak_search.
-
- (Object) enable_index!
Installs a precommit hook that automatically indexes objects into riak_search.
-
- (true, false) exists?(key, options = {})
(also: #exist?)
Checks whether an object exists in Riak.
-
- (Riak::RObject) get(key, options = {})
(also: #[])
Retrieve an object from within the bucket.
-
- (RObject) get_or_new(key, options = {})
Fetches an object if it exists, otherwise creates a new one with the given key.
-
- (Bucket) initialize(client, name)
constructor
Create a Riak bucket manually.
-
- (String) inspect
A representation suitable for IRB and debugging output.
-
- (true, false) is_indexed?
Detects whether the bucket is automatically indexed into riak_search.
-
- (Array<String>) keys(options = {}) {|Array<String>| ... }
Accesses or retrieves a list of keys in this bucket.
-
- (Fixnum) n_value
(also: #n_val)
The N value, or number of replicas for this bucket.
-
- (Object) n_value=(value)
(also: #n_val=)
Set the N value (number of replicas).
-
- (RObject) new(key = nil)
Create a new blank object.
-
- (Hash) props
(also: #properties)
Internal Riak bucket properties.
-
- (Hash) props=(properties)
(also: #properties=)
Sets internal properties on the bucket Note: this results in a request to the Riak server! symbolic) symbolic) (numeric or symbolic) symbolic).
Methods included from Util::Escape
Methods included from Util::Translation
Constructor Details
- (Bucket) initialize(client, name)
Create a Riak bucket manually.
37 38 39 40 41 |
# File 'riak-client/lib/riak/bucket.rb', line 37 def initialize(client, name) raise ArgumentError, t("client_type", :client => client.inspect) unless Client === client raise ArgumentError, t("string_type", :string => name.inspect) unless String === name @client, @name = client, name end |
Instance Attribute Details
- (Riak::Client) client (readonly)
The associated client
29 30 31 |
# File 'riak-client/lib/riak/bucket.rb', line 29 def client @client end |
- (String) name (readonly)
The bucket name
32 33 34 |
# File 'riak-client/lib/riak/bucket.rb', line 32 def name @name end |
Instance Method Details
- (true, false) ==(other)
Whether the other is equivalent
199 200 201 |
# File 'riak-client/lib/riak/bucket.rb', line 199 def ==(other) Bucket === other && other.client == client && other.name == name end |
- (true, false) allow_mult
Whether the bucket allows divergent siblings
154 155 156 |
# File 'riak-client/lib/riak/bucket.rb', line 154 def allow_mult props['allow_mult'] end |
- (Object) allow_mult=(value)
Set the allow_mult property. NOTE This will result in a PUT request to Riak.
160 161 162 163 |
# File 'riak-client/lib/riak/bucket.rb', line 160 def allow_mult=(value) self.props = {'allow_mult' => value} value end |
- (Object) delete(key, options = {})
Deletes a key from the bucket
149 150 151 |
# File 'riak-client/lib/riak/bucket.rb', line 149 def delete(key, ={}) client.backend.delete_object(self, key, [:rw]) end |
- (Object) disable_index!
Removes the precommit hook that automatically indexes objects into riak_search.
137 138 139 140 141 |
# File 'riak-client/lib/riak/search.rb', line 137 def disable_index! if is_indexed? self.props = {"precommit" => (props['precommit'] - [SEARCH_PRECOMMIT_HOOK])} end end |
- (Object) enable_index!
Installs a precommit hook that automatically indexes objects into riak_search.
129 130 131 132 133 |
# File 'riak-client/lib/riak/search.rb', line 129 def enable_index! unless is_indexed? self.props = {"precommit" => (props['precommit'] + [SEARCH_PRECOMMIT_HOOK])} end end |
- (true, false) exists?(key, options = {}) Also known as: exist?
Checks whether an object exists in Riak.
135 136 137 138 139 140 141 142 |
# File 'riak-client/lib/riak/bucket.rb', line 135 def exists?(key, ={}) begin get(key, ) true rescue Riak::FailedRequest false end end |
- (Riak::RObject) get(key, options = {}) Also known as: []
Retrieve an object from within the bucket.
101 102 103 |
# File 'riak-client/lib/riak/bucket.rb', line 101 def get(key, ={}) @client.backend.fetch_object(self, key, [:r]) end |
- (RObject) get_or_new(key, options = {})
Fetches an object if it exists, otherwise creates a new one with the given key
118 119 120 121 122 123 124 125 126 127 128 |
# File 'riak-client/lib/riak/bucket.rb', line 118 def get_or_new(key, ={}) begin get(key, ) rescue Riak::FailedRequest => fr if fr.not_found? new(key) else raise fr end end end |
- (String) inspect
A representation suitable for IRB and debugging output
194 195 196 |
# File 'riak-client/lib/riak/bucket.rb', line 194 def inspect "#<Riak::Bucket {#{name}}#{" keys=[#{keys.join(',')}]" if defined?(@keys)}>" end |
- (true, false) is_indexed?
Detects whether the bucket is automatically indexed into riak_search.
146 147 148 |
# File 'riak-client/lib/riak/search.rb', line 146 def is_indexed? props['precommit'].include?(SEARCH_PRECOMMIT_HOOK) end |
- (Array<String>) keys(options = {}) {|Array<String>| ... }
Accesses or retrieves a list of keys in this bucket. If a block is given, keys will be streamed through the block (useful for large buckets). When streaming, results of the operation will not be retained in the local Bucket object.
51 52 53 54 55 56 57 58 59 |
# File 'riak-client/lib/riak/bucket.rb', line 51 def keys(={}, &block) if block_given? @client.backend.list_keys(self, &block) @keys = nil elsif @keys.nil? || [:reload] @keys = @client.backend.list_keys(self) end @keys end |
- (Fixnum) n_value Also known as: n_val
The N value, or number of replicas for this bucket
166 167 168 |
# File 'riak-client/lib/riak/bucket.rb', line 166 def n_value props['n_val'] end |
- (Object) n_value=(value) Also known as: n_val=
Set the N value (number of replicas). NOTE This will result in a PUT request to Riak. Setting this value after the bucket has objects stored in it may have unpredictable results.
174 175 176 177 |
# File 'riak-client/lib/riak/bucket.rb', line 174 def n_value=(value) self.props = {'n_val' => value} value end |
- (RObject) new(key = nil)
Create a new blank object
109 110 111 112 113 |
# File 'riak-client/lib/riak/bucket.rb', line 109 def new(key=nil) RObject.new(self, key).tap do |obj| obj.content_type = "application/json" end end |
- (Hash) props Also known as: properties
Internal Riak bucket properties.
90 91 92 |
# File 'riak-client/lib/riak/bucket.rb', line 90 def props @props ||= @client.backend.get_bucket_props(self) end |
- (Hash) props=(properties) Also known as: properties=
Sets internal properties on the bucket Note: this results in a request to the Riak server! symbolic) symbolic) (numeric or symbolic) symbolic)
80 81 82 83 84 85 |
# File 'riak-client/lib/riak/bucket.rb', line 80 def props=(properties) raise ArgumentError, t("hash_type", :hash => properties.inspect) unless Hash === properties props.merge!(properties) @client.backend.set_bucket_props(self, properties) props end |