Parent

Files

Class/Module Index [+]

Quicksearch

Dragonfly::DataStorage::CouchDataStore

Public Class Methods

new(opts={}) click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 16
def initialize(opts={})
  self.host = opts[:host] if opts[:host]
  self.port = opts[:port] if opts[:port]
  self.database = opts[:database] if opts[:database]
  self.username = opts[:username]
  self.password = opts[:password]
end

Public Instance Methods

db() click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 54
def db
  @db ||= begin
    url = "http://#{auth}#{host}:#{port}"
    CouchRest.new(url).database!(database)
  end
end
destroy(uid) click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 46
def destroy(uid)
  doc_id, attachment = parse_uid(uid)
  doc = db.get(doc_id)
  db.delete_doc(doc)
rescue RestClient::ResourceNotFound => e
  raise DataNotFound, "#{e} - #{uid}"
end
retrieve(uid) click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 38
def retrieve(uid)
  doc_id, attachment = parse_uid(uid)
  doc = db.get(doc_id)
  [doc.fetch_attachment(attachment), marshal_decode(doc['meta'])]
rescue RestClient::ResourceNotFound => e
  raise DataNotFound, "#{e} - #{uid}"
end
store(temp_object, opts={}) click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 24
def store(temp_object, opts={})
  name = temp_object.name || 'file'
  content_type = opts[:content_type] || opts[:mime_type] || 'application/octet-stream'
  
  temp_object.file do |f|
    doc = CouchRest::Document.new(:meta => marshal_encode(temp_object.meta))
    response = db.save_doc(doc)
    doc.put_attachment(name, f.dup, :content_type => content_type)
    form_uid(response['id'], name)
  end
rescue RuntimeError => e
  raise UnableToStore, "#{e} - #{temp_object.inspect}"
end
url_for(uid, opts={}) click to toggle source
# File lib/dragonfly/data_storage/couch_data_store.rb, line 61
def url_for(uid, opts={})
  doc_id, attachment = parse_uid(uid)
  "http://#{host}:#{port}/#{database}/#{doc_id}/#{attachment}"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.