Class: MongoRequestLogger::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/mongo_request_logger/railtie.rb

Class Method Summary collapse

Class Method Details

.setup(app) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mongo_request_logger/railtie.rb', line 9

def setup(app)
  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

  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