class MongodbLogger::Adapers::Mongo

Public Class Methods

new(options = {}) click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 5
def initialize(options = {})
  @authenticated = false
  @configuration = options
  if @configuration[:url]
    uri = URI.parse(@configuration[:url])
    @configuration[:database] = uri.path.gsub(/^\//, '')
    @connection ||= mongo_connection_object.db(@configuration[:database])
    @authenticated = true
  else
    @connection ||= mongo_connection_object.db(@configuration[:database])
    if @configuration[:username] && @configuration[:password]
      # the driver stores credentials in case reconnection is required
      @authenticated = @connection.authenticate(@configuration[:username],
                                                    @configuration[:password])
    end
  end
end

Public Instance Methods

calculate_mapreduce(map, reduce, params = {}) click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 50
def calculate_mapreduce(map, reduce, params = {})
  @collection.map_reduce(map, reduce, { query: params[:conditions], sort: ['$natural', -1], out: { inline: true }, raw: true }).find()
end
collection_stats() click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 33
def collection_stats
  collection_stats_hash(@collection.stats)
end
create_collection() click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 23
def create_collection
  @connection.create_collection(collection_name,
    { capped: true, size: @configuration[:capsize].to_i })
end
filter_by_conditions(filter) click to toggle source

filter

# File lib/mongodb_logger/adapters/mongo.rb, line 42
def filter_by_conditions(filter)
  @collection.find(filter.get_mongo_conditions).limit(filter.get_mongo_limit).sort('$natural', -1)
end
find_by_id(id) click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 46
def find_by_id(id)
  @collection.find_one(::BSON::ObjectId.from_string(id))
end
insert_log_record(record, options = {}) click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 28
def insert_log_record(record, options = {})
  record[:_id] = ::BSON::ObjectId.new
  @collection.insert(record, options[:write_options])
end
rename_collection(to, drop_target = false) click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 37
def rename_collection(to, drop_target = false)
  rename_collection_command(mongo_connection_object.db("admin"), to, drop_target)
end

Private Instance Methods

mongo_connection_object() click to toggle source
# File lib/mongodb_logger/adapters/mongo.rb, line 56
def mongo_connection_object
  if @configuration[:hosts]
    conn = ::Mongo::MongoReplicaSetClient.new(@configuration[:hosts],
      pool_timeout: 6, ssl: @configuration[:ssl])
    @configuration[:replica_set] = true
  elsif @configuration[:url]
    conn = ::Mongo::MongoClient.from_uri(@configuration[:url])
  else
    conn = ::Mongo::MongoClient.new(@configuration[:host],
                                 @configuration[:port],
                                 pool_timeout: 6,
                                 ssl: @configuration[:ssl])
  end
  @connection_type = conn.class
  conn
end