Module: NewRelic::Control::ClassMethods

Included in:
NewRelic::Control
Defined in:
lib/new_relic/control/class_methods.rb

Overview

class-level methods for lazy creation of NewRelic::Control and NewRelic::LocalEnvironment instances.

Instance Method Summary collapse

Instance Method Details

#instance(create = true) ⇒ Object

Access the Control singleton, lazy initialized. Default will instantiate a new instance or pass false to defer



8
9
10
# File 'lib/new_relic/control/class_methods.rb', line 8

def instance(create=true)
  @instance ||= create && new_instance
end

#load_framework_class(framework) ⇒ Object

Loads the specified framework class from the NewRelic::Control::Frameworks module



35
36
37
38
39
40
41
42
43
# File 'lib/new_relic/control/class_methods.rb', line 35

def load_framework_class(framework)
  begin
    require "new_relic/control/frameworks/#{framework}"
  rescue LoadError
    # maybe it is already loaded by some external system
    # i.e. rpm_contrib or user extensions?
  end
  NewRelic::Control::Frameworks.const_get(framework.to_s.capitalize)
end

#load_test_frameworkObject

nb this does not ‘load test’ the framework, it loads the ‘test framework’



27
28
29
30
31
# File 'lib/new_relic/control/class_methods.rb', line 27

def load_test_framework
  config = File.expand_path(File.join('..','..','..','..', "test","config","newrelic.yml"), __FILE__)
  require "config/test_control"
  NewRelic::Control::Frameworks::Test.new(local_env, config)
end

#local_envObject

Access the LocalEnvironment singleton, lazy initialized



13
14
15
# File 'lib/new_relic/control/class_methods.rb', line 13

def local_env
  @local_env ||= NewRelic::LocalEnvironment.new
end

#new_instanceObject

Create the concrete class for environment specific behavior



18
19
20
21
22
23
24
# File 'lib/new_relic/control/class_methods.rb', line 18

def new_instance
  if local_env.framework == :test
    load_test_framework
  else
    load_framework_class(local_env.framework).new(local_env)
  end
end

#newrelic_rootObject

The root directory for the plugin or gem



46
47
48
# File 'lib/new_relic/control/class_methods.rb', line 46

def newrelic_root
  File.expand_path(File.join("..", "..", "..", ".."), __FILE__)
end