class ScoutApm::Environment
Constants
- BACKGROUND_JOB_INTEGRATIONS
- FRAMEWORK_INTEGRATIONS
- PLATFORM_INTEGRATIONS
- SERVER_INTEGRATIONS
-
I’ve put Thin and Webrick last as they are often used in development and included in Gemfiles but less likely used in production.
- STDOUT_LOGGER
Public Instance Methods
Source
# File lib/scout_apm/environment.rb, line 140 def app_server app_server_integration.name end
App server’s name (symbol)
Source
# File lib/scout_apm/environment.rb, line 134 def app_server_integration(force=false) @app_server = nil if force @app_server ||= SERVER_INTEGRATIONS.detect{ |integration| integration.present? } end
Returns the whole integration object This needs to be improved. Frequently, multiple app servers gem are present and which ever is checked first becomes the designated app server.
Next step: (1) list out all detected app servers (2) install hooks for those that need it (passenger, rainbows, unicorn).
Source
# File lib/scout_apm/environment.rb, line 67 def application_name Agent.instance.context.config.value("name") || framework_integration.application_name || "App" end
Source
# File lib/scout_apm/environment.rb, line 150 def background_job_integrations if Agent.instance.context.config.value("enable_background_jobs") @background_job_integrations ||= BACKGROUND_JOB_INTEGRATIONS.select {|integration| integration.present?} else [] end end
Source
# File lib/scout_apm/environment.rb, line 73 def database_engine framework_integration.database_engine end
Source
# File lib/scout_apm/environment.rb, line 51 def env @env ||= framework_integration.env end
Source
# File lib/scout_apm/environment.rb, line 146 def forking? app_server_integration.forking? || (background_job_integration && background_job_integration.forking?) end
If forking, don’t start worker thread in the master process. Since it’s started as a Thread, it won’t survive the fork.
Source
# File lib/scout_apm/environment.rb, line 55 def framework framework_integration.name end
Source
# File lib/scout_apm/environment.rb, line 59 def framework_integration @framework ||= FRAMEWORK_INTEGRATIONS.detect{ |integration| integration.present? } end
Source
# File lib/scout_apm/environment.rb, line 106 def framework_root if override_root = Agent.instance.context.config.value("application_root") return override_root end if framework == :rails RAILS_ROOT.to_s elsif framework == :rails3_or_4 Rails.root elsif framework == :sinatra Sinatra::Application.root || "." else '.' end end
Source
# File lib/scout_apm/environment.rb, line 125 def git_revision @git_revision ||= ScoutApm::GitRevision.new(Agent.instance.context) end
Source
# File lib/scout_apm/environment.rb, line 121 def hostname @hostname ||= Agent.instance.context.config.value("hostname") || platform_integration.hostname end
Source
# File lib/scout_apm/environment.rb, line 159 def interactive? defined?(::Rails::Console) && $stdout.isatty && $stdin.isatty end
If both stdin & stdout are interactive and the Rails::Console constant is defined
Source
# File lib/scout_apm/environment.rb, line 209 def os return @os if @os raw_os = RbConfig::CONFIG['target_os'] match = raw_os.match(/([a-z]+)/) if match @os = match[1] else @os = raw_os end end
Returns a string representation of the OS (ex: darwin, linux)
Source
# File lib/scout_apm/environment.rb, line 63 def platform_integration @platform ||= PLATFORM_INTEGRATIONS.detect{ |integration| integration.present? } end
Source
# File lib/scout_apm/environment.rb, line 81 def processors @processors ||= begin proc_file = '/proc/cpuinfo' processors = if !File.exist?(proc_file) 1 else lines = File.read("/proc/cpuinfo").lines.to_a lines.grep(/^processor\s*:/i).size end [processors, 1].compact.max end end
Source
# File lib/scout_apm/environment.rb, line 77 def raw_database_adapter framework_integration.raw_database_adapter end
Source
# File lib/scout_apm/environment.rb, line 165 def rubinius? RUBY_VERSION =~ /rubinius/i end
ruby checks
Source
# File lib/scout_apm/environment.rb, line 178 def ruby_187? return @ruby_187 if defined?(@ruby_187) @ruby_187 = defined?(RUBY_VERSION) && RUBY_VERSION.match(/^1\.8\.7/) end
Source
# File lib/scout_apm/environment.rb, line 173 def ruby_19? return @ruby_19 if defined?(@ruby_19) @ruby_19 = defined?(RUBY_ENGINE) && RUBY_ENGINE == "ruby" && RUBY_VERSION.match(/^1\.9/) end
Source
# File lib/scout_apm/environment.rb, line 183 def ruby_2? return @ruby_2 if defined?(@ruby_2) @ruby_2 = defined?(RUBY_VERSION) && RUBY_VERSION.match(/^2/) end
Source
# File lib/scout_apm/environment.rb, line 188 def ruby_3? return @ruby_3 if defined?(@ruby_3) @ruby_3 = defined?(RUBY_VERSION) && RUBY_VERSION.match(/^3/) end
Source
# File lib/scout_apm/environment.rb, line 193 def ruby_minor return @ruby_minor if defined?(@ruby_minor) @ruby_minor = defined?(RUBY_VERSION) && RUBY_VERSION.split(".")[1].to_i end
Source
# File lib/scout_apm/environment.rb, line 94 def scm_subdirectory @scm_subdirectory ||= if Agent.instance.context.config.value('scm_subdirectory').empty? '' else Agent.instance.context.config.value('scm_subdirectory').sub(/^\//, '') # Trim any leading slash end end
Source
# File lib/scout_apm/environment.rb, line 222 def sinatra? framework_integration.name == :sinatra end
framework checks
Source
# File lib/scout_apm/environment.rb, line 204 def supports_kwarg_delegation? ruby_3? || (ruby_2? && ruby_minor >= 7) end
Returns true if this Ruby version makes positional and keyword arguments incompatible
Source
# File lib/scout_apm/environment.rb, line 199 def supports_module_prepend? ruby_2? || ruby_3? end
Returns true if this Ruby version supports Module#prepend.