Class: MongoRequestLogger::Adapters::Mongo

Inherits:
Base
  • Object
show all
Defined in:
lib/mongo_request_logger/adapters/mongo.rb

Instance Attribute Summary

Attributes inherited from Base

#authenticated, #collection, #configuration, #connection, #connection_type

Instance Method Summary collapse

Methods inherited from Base

#authenticated?, #check_for_collection, #collection_name, #collection_stats_hash, #reset_collection

Constructor Details

#initialize(options = {}) ⇒ Mongo

Returns a new instance of Mongo.



10
11
12
13
14
15
16
17
18
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 10

def initialize(options = {})
  options = MongoRequestLogger::Config.new(options) unless options.is_a? MongoRequestLogger::Config
  @configuration = options

  mongo_connection_object
  connect

  check_for_collection
end

Instance Method Details

#clear!Object

Raises:

  • (NotImplementedError)


61
62
63
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 61

def clear!
  raise NotImplementedError
end

#collection_statsObject



45
46
47
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 45

def collection_stats
  collection_stats_hash(@collection.stats)
end

#connectObject



20
21
22
23
24
25
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 20

def connect
  @connection ||= mongo_connection_object.db(@configuration.database)
  if @configuration.credentials
    @authenticated = @connection.authenticate(*@configuration.credentials)
  end
end

#create_collectionObject



31
32
33
34
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 31

def create_collection
  @connection.create_collection(collection_name,
      {:capped => true, :size => @configuration['capsize'].to_i*1024*1024})
end

#create_index(field) ⇒ Object



36
37
38
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 36

def create_index field
  @collection.create_index(field)
end

#find_by_id(id) ⇒ Object



57
58
59
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 57

def find_by_id(id)
  @collection.find_one(::BSON::ObjectId(id))
end

#insert_log_record(record) ⇒ Object



40
41
42
43
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 40

def insert_log_record(record)
  # TODO: we should make this non-safe?
  @collection.insert(record)
end

#query(criteria, options = {}) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 49

def query(criteria, options={})
  q = @collection.find(criteria).sort('timestamp', -1)
  if options[:limit]
    q = q.limit(options[:limit])
  end
  q
end

#reconnectObject



27
28
29
# File 'lib/mongo_request_logger/adapters/mongo.rb', line 27

def reconnect
  connect
end