lib/ganymed/mongodb.rb in ganymed-0.3.1 vs lib/ganymed/mongodb.rb in ganymed-0.3.2
- old
+ new
@@ -10,31 +10,31 @@
@collections = {}
log.info("using MongoDB at #{config.host}:#{config.port}/#{config.database}")
end
def connection
- @connection ||= ::Mongo::Connection.new(config.host,
- config.port,
+ @connection ||= ::Mongo::Connection.new(config.host, config.port,
:pool_size => config.pool_size,
:pool_timeout => config.pool_timeout)
end
def db
@db ||= connection.db(config.database)
end
def collection(ns)
- @collections[ns] ||= db[ns].tap do |col|
- col.ensure_index([['c', ::Mongo::ASCENDING]])
- col.ensure_index([['o', ::Mongo::ASCENDING]])
- col.ensure_index([['t', ::Mongo::ASCENDING]])
- col.ensure_index([['c', ::Mongo::ASCENDING], ['o', ::Mongo::ASCENDING]])
- col.ensure_index([['o', ::Mongo::ASCENDING], ['t', ::Mongo::ASCENDING]])
- col.ensure_index([['c', ::Mongo::ASCENDING], ['o', ::Mongo::ASCENDING], ['t', ::Mongo::ASCENDING]], :unique => true)
- end
+ return @collections[ns] if @collections.has_key?(ns)
+ col = @collections[ns] = db.collection(ns)
+ col.ensure_index([['c', ::Mongo::ASCENDING]])
+ col.ensure_index([['o', ::Mongo::ASCENDING]])
+ col.ensure_index([['t', ::Mongo::ASCENDING]])
+ col.ensure_index([['c', ::Mongo::ASCENDING], ['o', ::Mongo::ASCENDING]])
+ col.ensure_index([['o', ::Mongo::ASCENDING], ['t', ::Mongo::ASCENDING]])
+ col.ensure_index([['c', ::Mongo::ASCENDING], ['o', ::Mongo::ASCENDING], ['t', ::Mongo::ASCENDING]], :unique => true)
+ col
end
- def method_missing(method, *args, &block)
- db.__send__(method, *args, &block)
+ def [](*args)
+ db.collection(*args)
end
end
end