Class: Moneta::S3
Overview
An S3 implementation of Moneta
Example usage:
require 'rubygems'
require 'moneta'
require 'moneta/s3'
store = Moneta::S3.new(
:access_key_id => 'ACCESS_KEY_ID',
:secret_access_key => 'SECRET_ACCESS_KEY',
:bucket => 'a_bucket'
)
store['somefile']
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #clear ⇒ Object
- #delete(key) ⇒ Object
-
#initialize(options = {}) ⇒ S3
constructor
Initialize the Moneta::S3 store.
- #key?(key) ⇒ Boolean (also: #has_key?)
-
#store(key, value, options = {}) ⇒ Object
Store the key/value pair.
- #update_key(key, options = {}) ⇒ Object
Methods included from Defaults
Constructor Details
#initialize(options = {}) ⇒ S3
Initialize the Moneta::S3 store.
Required values passed in the options hash:
-
:access_key_id: The access id key -
:secret_access_key: The secret key -
:bucket: The name of bucket. Will be created if it doesn’t
exist.
-
:multi_thread: Set to true if using threading
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/moneta/s3.rb', line 34 def initialize( = {}) () s3 = RightAws::S3.new( [:access_key_id], [:secret_access_key], { :logger => logger, :multi_thread => .delete(:multi_thread) || false } ) @bucket = s3.bucket(.delete(:bucket), true) end |
Instance Method Details
#[](key) ⇒ Object
53 54 55 |
# File 'lib/moneta/s3.rb', line 53 def [](key) get(key) end |
#[]=(key, value) ⇒ Object
57 58 59 |
# File 'lib/moneta/s3.rb', line 57 def []=(key, value) store(key, value) end |
#clear ⇒ Object
97 98 99 |
# File 'lib/moneta/s3.rb', line 97 def clear @bucket.clear end |
#delete(key) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/moneta/s3.rb', line 61 def delete(key) k = s3_key(key) if k value = k.get k.delete value end end |
#key?(key) ⇒ Boolean Also known as: has_key?
47 48 49 |
# File 'lib/moneta/s3.rb', line 47 def key?(key) !s3_key(key).nil? end |
#store(key, value, options = {}) ⇒ Object
Store the key/value pair.
Options: *:meta_headers: Meta headers passed to S3 *:perms: Permissions passed to S3 *:headers: Headers sent as part of the PUT request *:expires_in: Number of seconds until expiration
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/moneta/s3.rb', line 77 def store(key, value, = {}) debug "store(key=#{key}, value=#{value}, options=#{options.inspect})" = () perms = [:perms] headers = [:headers] || {} case value when IO @bucket.put(key, value.read, , perms, headers) else @bucket.put(key, value, , perms, headers) end end |
#update_key(key, options = {}) ⇒ Object
91 92 93 94 95 |
# File 'lib/moneta/s3.rb', line 91 def update_key(key, = {}) debug "update_key(key=#{key}, options=#{options.inspect})" k = s3_key(key, false) k.(()) unless k.nil? end |