Class: Moneta::S3

Inherits:
Object
  • Object
show all
Defined in:
lib/moneta/s3.rb

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

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



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/moneta/s3.rb', line 32

def initialize(options = {})
  validate_options(options)
  s3 = RightAws::S3.new(
    options[:access_key_id], 
    options[:secret_access_key], 
    {
      :logger => logger, 
      :multi_thread => options.delete(:multi_thread) || false
    }
  )
  @bucket = s3.bucket(options.delete(:bucket), true)
end

Instance Method Details

#[](key) ⇒ Object



51
52
53
# File 'lib/moneta/s3.rb', line 51

def [](key)
  get(key)
end

#[]=(key, value) ⇒ Object



55
56
57
# File 'lib/moneta/s3.rb', line 55

def []=(key, value)
  store(key, value)
end

#clearObject



95
96
97
# File 'lib/moneta/s3.rb', line 95

def clear
  @bucket.clear
end

#delete(key) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/moneta/s3.rb', line 59

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?

Returns:

  • (Boolean)


45
46
47
# File 'lib/moneta/s3.rb', line 45

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



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/moneta/s3.rb', line 75

def store(key, value, options = {})
  debug "store(key=#{key}, value=#{value}, options=#{options.inspect})"
  meta_headers = meta_headers_from_options(options)
  perms = options[:perms]
  headers = options[:headers] || {}
  
  case value
  when IO
    @bucket.put(key, value.read, meta_headers, perms, headers)
  else
    @bucket.put(key, value, meta_headers, perms, headers)
  end
end

#update_key(key, options = {}) ⇒ Object



89
90
91
92
93
# File 'lib/moneta/s3.rb', line 89

def update_key(key, options = {})
  debug "update_key(key=#{key}, options=#{options.inspect})"
  k = s3_key(key, false)
  k.save_meta(meta_headers_from_options(options)) unless k.nil?
end