class Doctor::Engine

Public Instance Methods

backup_current_logs() click to toggle source
# File lib/doctor/engine.rb, line 39
def backup_current_logs
  OpenStruct.new(
    rails: Rails.logger,
    active_record: ActiveRecord::Base.logger,
    action_controller: ActionController::Base.logger
  )
end
call_with_doctor(env) click to toggle source
# File lib/doctor/engine.rb, line 14
def call_with_doctor(env)
  logs = nil
  begin
    logs = backup_current_logs

    define_doctor_log_if_needed(env)

    call_without_doctor(env)
  ensure
    return_logs(logs) unless logs.nil?
  end
end
define_doctor_log_if_needed(env) click to toggle source
# File lib/doctor/engine.rb, line 47
def define_doctor_log_if_needed(env)
  return unless env['PATH_INFO'].include?('doctor/health_check')

  doctor_log = Logger.new("#{Rails.root}/log/doctor.log")

  Rails.logger = doctor_log
  ActiveRecord::Base.logger = doctor_log
  ActionController::Base.logger = doctor_log
end
return_logs(logs) click to toggle source
# File lib/doctor/engine.rb, line 31
def return_logs(logs)
  Rails.logger = logs.rails unless logs.rails.nil?

  ActiveRecord::Base.logger = logs.active_record unless logs.active_record.nil?

  ActionController::Base.logger = logs.action_controller unless logs.action_controller.nil?
end