Module: Bootprint::InitializerProfiler

Defined in:
lib/bootprint/initializer_profiler.rb

Defined Under Namespace

Modules: EnvironmentProbe, Instrumentation

Constant Summary collapse

NETWORK_METHODS =
%i[connect connect_nonblock tcp start open].freeze

Class Method Summary collapse

Class Method Details

.config_fingerprintObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bootprint/initializer_profiler.rb', line 25

def config_fingerprint
  return {} unless defined?(Rails) && Rails.respond_to?(:application) && Rails.application

  config = Rails.application.config
  %i[eager_load cache_classes time_zone cache_store session_store].to_h do |name|
    value = config.public_send(name) if config.respond_to?(name)
    [name.to_s, value.is_a?(Array) ? value.first.to_s : value.to_s]
  rescue StandardError
    [name.to_s, nil]
  end
end

.install!Object



11
12
13
14
15
16
17
18
# File 'lib/bootprint/initializer_profiler.rb', line 11

def install!
  return unless Bootprint.configuration.profile_boot
  return unless defined?(Rails::Initializable::Initializer)
  return if Rails::Initializable::Initializer.ancestors.include?(Instrumentation)

  ENV.singleton_class.prepend(EnvironmentProbe) unless ENV.singleton_class.ancestors.include?(EnvironmentProbe)
  Rails::Initializable::Initializer.prepend(Instrumentation)
end

.record_missing_environment(name) ⇒ Object



20
21
22
23
# File 'lib/bootprint/initializer_profiler.rb', line 20

def record_missing_environment(name)
  collector = Thread.current[:bootprint_missing_environment]
  collector << name.to_s if collector
end