class MongodbLogger::Base

Public Class Methods

included(base) click to toggle source
# File lib/mongodb_logger.rb, line 15
def self.included(base)
  base.class_eval do
    if defined?(around_action)
      around_action :enable_mongodb_logger
    else
      around_filter :enable_mongodb_logger
    end
  end
end

Public Instance Methods

enable_mongodb_logger() { || ... } click to toggle source
# File lib/mongodb_logger.rb, line 25
def enable_mongodb_logger
  return yield unless Rails.logger.respond_to?(:mongoize)
  f_session = (request.respond_to?(:session) ? request.session : session)
  Rails.logger.mongoize({
    method:         request.method,
    action:         action_name,
    controller:     controller_name,
    path:           request.path,
    url:            request.url,
    params:         (request.respond_to?(:filtered_parameters) ? request.filtered_parameters : params),
    session:        mongo_fix_session_keys(f_session),
    ip:             request.remote_ip
  }) { yield }
end
mongo_fix_session_keys(session = {}) click to toggle source

session keys can be with dots. It is invalid keys for BSON

# File lib/mongodb_logger.rb, line 40
def mongo_fix_session_keys(session = {})
  new_session = Hash.new
  session.to_hash.each do |i, j|
    new_session[i.gsub(/\./i, "|")] = j.inspect
  end unless session.empty?
  new_session
end