Sha256: cee4a1ed859a8efe1d82bf2772a4c031e371ddb75357f747af5acd1505109c8e

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

require 'mongo'

module Ganymed
  # @private
  class MongoDB
    attr_reader :config

    def initialize(config)
      @config = config
      @collections = {}
      log.info("using MongoDB at #{config.host}:#{config.port}/#{config.database}")
    end

    def connection
      @connection ||= ::Mongo::Connection.new(config.host,
                                              config.port,
                                              :pool_size => 5,
                                              :pool_timeout => 5)
    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
    end

    def method_missing(method, *args, &block)
      db.__send__(method, *args, &block)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ganymed-0.3.0 lib/ganymed/mongodb.rb
ganymed-0.2.3 lib/ganymed/mongodb.rb
ganymed-0.2.2 lib/ganymed/mongodb.rb
ganymed-0.2.1 lib/ganymed/mongodb.rb
ganymed-0.2.0 lib/ganymed/mongodb.rb