Sha256: bec458a4f3090cb7dfc58b6e2f2bf7fd24c18d8f2001c5c8a07eaad71c3187a9

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'rails_stdout_json_logging/rails'

module RailsStdoutJsonLogging
  class Rails2 < Rails
    def self.set_logger
      super
      redefine_rails_logger!
      classes.each do |klass_name|
        begin
          klass = constantize(klass_name)
          klass.logger = ::Rails.logger
        rescue NameError => exception
          puts "WARNING: #{exception.message}"
        end
      end
    end

    def redefine_rails_logger!
      class << ::Rails
        def memoized_heroku_logger
          @logger ||= self.heroku_stdout_logger
        end
        alias_method :rails_default_logger, :logger
        alias_method :logger, :memoized_heroku_logger
      end
    end

    def self.classes
      %w[
        ActiveSupport::Dependencies
        ActiveRecord::Base
        ActionController::Base
        ActionMailer::Base
        ActionView::Base
        ActiveResource::Base
      ]
    end

    def self.constantize(klass_name)
      klass_name.split('::').inject(Object) { |parent, child| parent.const_get(child) }
    rescue NameError
      raise NameError, "Unable to find #{klass_name}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_stdout_json_logging-0.1.5 lib/rails_stdout_json_logging/rails2.rb