# encoding: utf-8 module Mongoid #:nodoc: module Config #:nodoc: class ReplsetDatabase < Hash # Configure the database connections. This will return an array # containing one Mongo::DB and nil (to keep compatibility with Mongoid::Config::Database) # If you want the reads to go to a secondary node use the :read_secondary(true): option # # @example Configure the connection. # db.configure # # @return [ Array Mongoid::Logger.new }) do |memo, (k, v)| memo[k.to_sym] = v memo end connection = Mongo::ReplSetConnection.new(*(hosts << options)) if authenticating? connection.add_auth(database, username, password) connection.apply_saved_authentication end [ connection.db(database), nil ] end # Do we need to authenticate against the database? # # @example Are we authenticating? # db.authenticating? # # @return [ true, false ] True if auth is needed, false if not. # # @since 2.0.2 def authenticating? username || password end # Convenience for accessing the hash via dot notation. # # @example Access a value in alternate syntax. # db.host # # @return [ Object ] The value in the hash. # # @since 2.0.2 def method_missing(name, *args, &block) self[name.to_s] end # Create the new db configuration class. # # @example Initialize the class. # Config::ReplsetDatabase.new( # "hosts" => [[host1,port1],[host2,port2]] # ) # # replSet does not supports auth # # @param [ Hash ] options The configuration options. # # @option options [ Array ] :hosts The database host. # @option options [ String ] :database The database name. # @option options [ Boolean ] :read_secondary Tells the driver to read from secondaries. # ... # # @see Mongo::ReplSetConnection for all options # # @since 2.0.0.rc.5 def initialize(options = {}) merge!(options) end end end end