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
Calls superclass method
OneApm::Probe::Instrumentation#install_shim
# 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