Class: NewRelic::EnvironmentReport

Inherits:
Object
  • Object
show all
Defined in:
lib/new_relic/environment_report.rb

Overview

The EnvironmentReport is responsible for analyzing the application’s environment and generating the data for the Environment Report in New Relic’s interface.

It contains useful system information like Ruby version, OS, loaded gems, etc.

Additional logic can be registered by using the EnvironmentReport.report_on hook.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEnvironmentReport

Generate the report based on the class level logic.



92
93
94
95
96
97
98
99
100
101
102
# File 'lib/new_relic/environment_report.rb', line 92

def initialize
  @data = self.class.registered_reporters.inject(Hash.new) do |data, (key, logic)|
    begin
      value = logic.call
      value ? record_value(data, key, value) : record_empty_value(key, value)
    rescue => e
      rescue_initialize(key, e)
    end
    data
  end
end

Instance Attribute Details

#dataObject (readonly)

end reporting logic



90
91
92
# File 'lib/new_relic/environment_report.rb', line 90

def data
  @data
end

Class Method Details

.registered_reportersObject



34
35
36
# File 'lib/new_relic/environment_report.rb', line 34

def self.registered_reporters
  @registered_reporters ||= Hash.new
end

.registered_reporters=(logic) ⇒ Object

allow the logic to be swapped out in tests



39
40
41
# File 'lib/new_relic/environment_report.rb', line 39

def self.registered_reporters=(logic)
  @registered_reporters = logic
end

.report_on(key, &block) ⇒ Object

This is the main interface for registering logic that should be included in the Environment Report. For example:

EnvironmentReport.report_on “Day of week” do

Time.now.strftime("%A")

end

The passed blocks will be run in EnvironmentReport instances on #initialize.

Errors raised in passed blocks will be handled and logged at debug, so it is safe to report on things that may not work in certain environments.

The blocks should only return strings or arrays full of strings. Falsey values will be ignored.



30
31
32
# File 'lib/new_relic/environment_report.rb', line 30

def self.report_on(key, &block)
  registered_reporters[key] = block
end

Instance Method Details

#[](key) ⇒ Object



104
105
106
# File 'lib/new_relic/environment_report.rb', line 104

def [](key)
  @data[key]
end

#[]=(key, value) ⇒ Object



108
109
110
# File 'lib/new_relic/environment_report.rb', line 108

def []=(key, value)
  @data[key] = value
end

#to_aObject



112
113
114
# File 'lib/new_relic/environment_report.rb', line 112

def to_a
  @data.to_a
end