class OneApm::Probe::Frameworks::Rails

Public Instance Methods

agent_hooks_installed() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 53
def agent_hooks_installed
  @@agent_hooks_installed ||= false
end
browser_monitoring_installed() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 57
def browser_monitoring_installed
  @@browser_monitoring_installed ||= false
end
developer_mode_installed() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 61
def developer_mode_installed
  @@developer_mode_installed ||= false
end
env() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 10
def env
  @env ||= RAILS_ENV.dup
end
init_config(options = {}) click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 35
def init_config(options = {})
  @config = options[:config]

  if rails_config && ::Rails.configuration.respond_to?(:after_initialize)
    rails_config.after_initialize do
      LibraryDetection.detect!
    end
  end

  if !Manager.config[:agent_enabled]
    OneApm::Manager.logger.info("OneApm Agent not running.")
  else
    install_developer_mode(rails_config) if Manager.config[:developer_mode]
    install_browser_monitoring(rails_config)
    install_agent_hooks(rails_config)
  end
end
install_agent_hooks(config) click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 65
def install_agent_hooks(config)
  return if agent_hooks_installed
  @@agent_hooks_installed = true
  return if config.nil? || !config.respond_to?(:middleware)
  begin
    require 'one_apm/rack/middleware_hooks'
    return unless OneApm::Rack::MiddlewareHooks.needed?
    config.middleware.use OneApm::Rack::MiddlewareHooks
    OneApm::Manager.logger.debug("Installed OneApm Agent Hooks middleware")
  rescue => e
    OneApm::Manager.logger.warn("Error installing OneApm Agent Hooks middleware", e)
  end
end
install_browser_monitoring(config) click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 79
def install_browser_monitoring(config)
  return if browser_monitoring_installed
  @@browser_monitoring_installed = true
  return if config.nil? || !config.respond_to?(:middleware) || !Manager.config[:'browser_monitoring.auto_instrument']
  begin
    require 'one_apm/rack/browser_monitoring'
    config.middleware.use OneApm::Rack::BrowserMonitoring
    OneApm::Manager.logger.debug("Installed OneApm Browser Monitoring middleware")
  rescue => e
    OneApm::Manager.logger.warn("Error installing OneApm Browser Monitoring middleware", e)
  end
end
install_developer_mode(rails_config) click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 92
def install_developer_mode(rails_config)
  return if env != "development"
  return if developer_mode_installed
  @@developer_mode_installed = true
  if rails_config && rails_config.respond_to?(:middleware)
    begin
      require 'one_apm/rack/developer_mode'
      rails_config.middleware.use OneApm::Rack::DeveloperMode
      OneApm::Manager.logger.info("Developer Mode enabled.")
    rescue => e
      ::OneApm::Manager.logger.warn("Error installing OneAPM Developer Mode", e)
    end
  elsif rails_config
    ::OneApm::Manager.logger.warn("Developer mode not available for Rails versions prior to 2.2")
  end
end
rails_config() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 27
def rails_config
  if defined?(::Rails) && ::Rails.respond_to?(:configuration)
    ::Rails.configuration
  else
    @config
  end
end
rails_root() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 23
def rails_root
  RAILS_ROOT if defined?(RAILS_ROOT)
end
root() click to toggle source
Calls superclass method OneApm::Probe::Frameworks::Ruby#root
# File lib/one_apm/frameworks/rails.rb, line 14
def root
  root = rails_root.to_s
  if !root.empty?
    root
  else
    super
  end
end

Protected Instance Methods

install_shim() click to toggle source
# File lib/one_apm/frameworks/rails.rb, line 111
def install_shim
  super
  require 'one_apm/inst/transaction_base'
  if ActiveSupport.respond_to?(:on_load) # rails 3+
    ActiveSupport.on_load(:action_controller) { include OneApm::Agent::Instrumentation::TransactionBase::Shim }
  else
    ActionController::Base.class_eval { include OneApm::Agent::Instrumentation::TransactionBase::Shim }
  end
end