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