class Dragonfly::DreamobjectsDataStore
Constants
- VERSION
Public Class Methods
new(options = {})
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 8 def initialize(options = {}) @bucket_name = options[:bucket_name] @access_key_id = options[:access_key_id] @secret_access_key = options[:secret_access_key] @endpoint = options.fetch(:endpoint, 'objects-us-west-1.dream.io') end
Public Instance Methods
create_bucket(name)
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 37 def create_bucket(name) storage.buckets.create(name) end
destroy(uid)
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 33 def destroy(uid) bucket.objects[uid].delete end
read(uid)
click to toggle source
Retrieve the data and meta as a 2-item array
# File lib/dragonfly/dreamobjects_data_store.rb, line 23 def read(uid) object = bucket.objects[uid] data = object.read meta = Serializer.json_decode(object.metadata[:json]) [ data, # can be a String, File, Pathname, Tempfile meta # the same meta Hash that was stored with write ] end
write(content, opts={})
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 15 def write(content, opts={}) uid = opts[:path] || generate_uid(content.name || 'file') bucket.objects[uid].write(content.data, metadata: { json: Serializer.json_encode(content.meta)}) uid end
Private Instance Methods
bucket()
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 50 def bucket @bucket ||= storage.buckets[@bucket_name] end
ensure_configured()
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 54 def ensure_configured unless @configured [:bucket_name, :access_key_id, :secret_access_key].each do |attr| if send(attr).nil? raise NotConfigured, "You need to configure #{self.class.name} with #{attr}" end end end @configured = true end
generate_uid(name)
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 65 def generate_uid(name) "#{Time.now.strftime '%Y/%m/%d/%H/%M/%S'}/#{rand(1000)}/#{name.gsub(/[^\w.]+/, '_')}" end
storage()
click to toggle source
# File lib/dragonfly/dreamobjects_data_store.rb, line 42 def storage @storage ||= AWS::S3.new(access_key_id: @access_key_id, secret_access_key: @secret_access_key, s3_endpoint: @endpoint, use_ssl: false, s3_force_path_style: true) end