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