Module: Threatstack::Instrumentation::Frameworks::TSRails

Defined in:
lib/instrumentation/frameworks/rails.rb

Defined Under Namespace

Modules: TSActionController

Constant Summary collapse

@@logger =
Threatstack::Utils::TSLogger.create 'RailsINST'

Class Method Summary collapse

Class Method Details

.load_application_configObject



28
29
30
31
32
33
# File 'lib/instrumentation/frameworks/rails.rb', line 28

def self.load_application_config
  return nil unless Gem.loaded_specs.key?('rails') && defined?(Rails)
  return Rails.configuration if Rails.respond_to?(:configuration)
  return Rails.application.config if Rails.respond_to?(:application) && Rails.application.respond_to?(:config)
  return nil
end

.patch_action_controllerObject



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/instrumentation/frameworks/rails.rb', line 16

def self.patch_action_controller
  @@logger.info 'Looking for Rails gem'
  return unless defined?(::Rails) && defined?(::Rails::VERSION)
  return unless defined?(ActionController) && defined?(ActionController::Base)

  @@logger.info "Rails #{Rails::VERSION::MAJOR.to_s} gem found, instrumenting ActionController"
  ActionController::Base.class_eval do
    include Threatstack::Instrumentation::Frameworks::TSRails::TSActionController
  end
  @@logger.info 'Rails instrumentation done'
end

.report_application_configObject



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/instrumentation/frameworks/rails.rb', line 35

def self.report_application_config
  @@logger.info 'Checking Rails application config'
  config = self.load_application_config
  if config.nil?
    @@logger.warn 'Rails config not found, skipping config check'
    return
  end
  @@logger.info 'Rails config loaded, relaying relevant values to server'
  # only send relevant props to the server
  filtered = { :force_ssl => config.force_ssl }
  Threatstack::Instrumentation.create_instrumentation_event('rails', 'configuration',
                                                            Threatstack::Constants::ROOT_DIR, 0, [filtered])
end