Class: PaulBunyan::Railtie

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

Constant Summary collapse

DEFAULT_LOGGERS =
[ActionController::LogSubscriber, ActionView::LogSubscriber].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.activesupport_formatterObject



9
10
11
12
13
# File 'lib/paul_bunyan/railtie.rb', line 9

def self.activesupport_formatter
  ActiveSupport::Logger::SimpleFormatter.new.tap do |formatter|
    formatter.extend ActiveSupport::TaggedLogging::Formatter
  end
end

.development_or_test?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/paul_bunyan/railtie.rb', line 15

def self.development_or_test?
  Rails.env.development? || Rails.env.test?
end

.migrating?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/paul_bunyan/railtie.rb', line 23

def self.migrating?
  rake_task? && ARGV.include?('db:migrate')
end

.rake_task?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/paul_bunyan/railtie.rb', line 19

def self.rake_task?
  File.basename($0) == 'rake'
end

Instance Method Details

#conditionally_unsubscribe(listener) ⇒ Object



59
60
61
62
# File 'lib/paul_bunyan/railtie.rb', line 59

def conditionally_unsubscribe(listener)
  delegate = listener.instance_variable_get(:@delegate)
  ActiveSupport::Notifications.unsubscribe(listener) if DEFAULT_LOGGERS.include?(delegate.class)
end

#file_target(app_config) ⇒ Object



64
65
66
67
68
69
70
71
72
73
# File 'lib/paul_bunyan/railtie.rb', line 64

def file_target(app_config)
  path = app_config.paths['log'].first
  path_dir = File.dirname(path)
  FileUtils.mkdir_p(path_dir) unless File.exist?(path_dir)

  output = File.open(path, 'a')
  output.binmode
  output.sync = app_config.autoflush_log
  output
end

#log_target(app_config) ⇒ Object



75
76
77
# File 'lib/paul_bunyan/railtie.rb', line 75

def log_target(app_config)
  config.logging.override_location ? stream_target : file_target(app_config)
end

#stream_targetObject



79
80
81
82
# File 'lib/paul_bunyan/railtie.rb', line 79

def stream_target
  STDOUT.sync = true
  STDOUT
end

#unsubscribe_default_log_subscribersObject



84
85
86
87
88
89
90
# File 'lib/paul_bunyan/railtie.rb', line 84

def unsubscribe_default_log_subscribers
  LogSubscriber.event_patterns.each do |pattern|
    ActiveSupport::Notifications.notifier.listeners_for(pattern).each do |listener|
      conditionally_unsubscribe(listener)
    end
  end
end