Parent

Files

Class/Module Index [+]

Quicksearch

Dragonfly::DataStorage::MongoDataStore

Constants

INVALID_OBJECT_ID
OBJECT_ID

Mongo gem deprecated ObjectID in favour of ObjectId

Public Class Methods

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

Public Instance Methods

connection() click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 66
def connection
  @connection ||= if hosts
    Mongo::ReplSetConnection.new(hosts, connection_opts)
  else
    Mongo::Connection.new(host, port, connection_opts)
  end
end
db() click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 74
def db
  @db ||= connection.db(database)
end
destroy(uid) click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 59
def destroy(uid)
  ensure_authenticated!
  grid.delete(bson_id(uid))
rescue Mongo::GridFileNotFound, INVALID_OBJECT_ID => e
  raise DataNotFound, "#{e} - #{uid}"
end
grid() click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 78
def grid
  @grid ||= Mongo::Grid.new(db)
end
retrieve(uid) click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 46
def retrieve(uid)
  ensure_authenticated!
  grid_io = grid.get(bson_id(uid))
  meta = marshal_decode(grid_io.metadata)
  meta.merge!(:stored_at => grid_io.upload_date)
  [
    grid_io.read,
    meta
  ]
rescue Mongo::GridFileNotFound, INVALID_OBJECT_ID => e
  raise DataNotFound, "#{e} - #{uid}"
end
store(temp_object, opts={}) click to toggle source
# File lib/dragonfly/data_storage/mongo_data_store.rb, line 36
def store(temp_object, opts={})
  ensure_authenticated!
  content_type = opts[:content_type] || opts[:mime_type] || 'application/octet-stream'
  temp_object.file do |f|
    mongo_id = grid.put(f, :content_type => content_type,
                           :metadata => marshal_encode(temp_object.meta))
    mongo_id.to_s
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.