Class: Judoscale::Rails::Railtie

Inherits:
Rails::Engine
  • Object
show all
Includes:
Logger
Defined in:
lib/judoscale/rails/railtie.rb

Overview

Inherit from ‘Engine`, even though we use none its specific features (yet), so we can safely rely on `load_config_initializers` to setup our initializers and avoid loading `config/initializers/*` too early, otherwise we can run into initialization order conflicts with other libraries like `Sentry` and `Scout`, which patch Ruby classes in different ways (`prepend` vs `alias_method`), and may cause `stack level too deep` errors if they are loaded too early in the init process.

Instance Method Summary collapse

Instance Method Details

#in_rails_console_or_runner?Boolean

Returns:

  • (Boolean)


20
21
22
23
# File 'lib/judoscale/rails/railtie.rb', line 20

def in_rails_console_or_runner?
  # This is gross, but we can't find a more reliable way to detect if we're in a Rails console/runner.
  caller.any? { |call| call.include?("console_command.rb") || call.include?("runner_command.rb") }
end

#in_rake_task?(task_regex) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
28
# File 'lib/judoscale/rails/railtie.rb', line 25

def in_rake_task?(task_regex)
  top_level_tasks = defined?(::Rake) && Rake.respond_to?(:application) && Rake.application.top_level_tasks || []
  top_level_tasks.any? { |task| task_regex.match?(task) }
end

#judoscale_configObject



30
31
32
33
# File 'lib/judoscale/rails/railtie.rb', line 30

def judoscale_config
  # Disambiguate from Judoscale::Rails::Config
  ::Judoscale::Config.instance
end