Sha256: db68a8bc8955705ead3188a89db512ddaa76a0ed6f32f801074edce68dc3ec39

Contents?: true

Size: 1.85 KB

Versions: 3

Compression:

Stored size: 1.85 KB

Contents

if defined? Rails
  require 'mongo_request_logger'

  require 'rails'

  module MongoRequestLogger
    class Railtie < ::Rails::Railtie
      class << self
        def setup(app)
          Mongo::Logger.logger.level = Logger::INFO # Because spammy.
          logger = MongoRequestLogger.configure(fallback_log: Rails.root.join("log/#{Rails.env}.log"))

          app.config.logger = logger

          Rails.logger = logger

          if defined? ActiveRecord
            ActiveRecord::Base.logger = logger
          end

          if defined? ActionController
            ActionController::Base.logger = logger
          end


          app.config.middleware.insert_after ActionDispatch::DebugExceptions, MongoRequestLogger::Rack

          unless logger.adapter.is_a?(MongoRequestLogger::Adapters::Mongo)
            app.config.after_initialize do
              # Unicorn clears the START_CTX when a worker is forked, so if we have
              # data in START_CTX then we know we're being preloaded. Unicorn does
              # not provide application-level hooks for executing code after the
              # process has forked, so we reconnect lazily.
              if defined?(Unicorn) && !Unicorn::HttpServer::START_CTX.empty?
                ::MongoRequestLogger.session.disconnect
              end

              # Passenger provides the :starting_worker_process event for executing
              # code after it has forked, so we use that and reconnect immediately.
              if ::Mongoid::Config.running_with_passenger?
                PhusionPassenger.on_event(:starting_worker_process) do |forked|
                  ::MongoRequestLogger.session.disconnect if forked
                end
              end
            end
          end

        end
      end

      initializer "setup logger" do |app|
        MongoRequestLogger::Railtie.setup(app)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongo_request_logger-0.8.0 lib/mongo_request_logger/railtie.rb
mongo_request_logger-0.7.0 lib/mongo_request_logger/railtie.rb
mongo_request_logger-0.6.0 lib/mongo_request_logger/railtie.rb