newrelic_rpm 2.14.1 → 3.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of newrelic_rpm might be problematic. Click here for more details.
- data/CHANGELOG +8 -0
- data/README.rdoc +2 -0
- data/install.rb +2 -2
- data/lib/new_relic/agent.rb +34 -1
- data/lib/new_relic/agent/agent.rb +34 -25
- data/lib/new_relic/agent/browser_monitoring.rb +111 -0
- data/lib/new_relic/agent/error_collector.rb +4 -4
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +3 -3
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +5 -7
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +8 -8
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +1 -1
- data/lib/new_relic/agent/instrumentation/memcache.rb +1 -1
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
- data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
- data/lib/new_relic/agent/instrumentation/metric_frame.rb +1 -0
- data/lib/new_relic/agent/instrumentation/queue_time.rb +26 -26
- data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rails/errors.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +2 -2
- data/lib/new_relic/agent/instrumentation/sinatra.rb +1 -1
- data/lib/new_relic/agent/method_tracer.rb +15 -15
- data/lib/new_relic/agent/shim_agent.rb +2 -0
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +3 -3
- data/lib/new_relic/agent/stats_engine/samplers.rb +2 -2
- data/lib/new_relic/agent/stats_engine/transactions.rb +2 -1
- data/lib/new_relic/agent/transaction_sample_builder.rb +101 -0
- data/lib/new_relic/agent/transaction_sampler.rb +299 -251
- data/lib/new_relic/control.rb +2 -2
- data/lib/new_relic/control/class_methods.rb +0 -5
- data/lib/new_relic/control/configuration.rb +4 -3
- data/lib/new_relic/control/frameworks/rails.rb +9 -12
- data/lib/new_relic/control/instance_methods.rb +2 -2
- data/lib/new_relic/control/instrumentation.rb +1 -1
- data/lib/new_relic/control/server_methods.rb +2 -2
- data/lib/new_relic/delayed_job_injection.rb +1 -1
- data/lib/new_relic/local_environment.rb +7 -7
- data/lib/new_relic/rack/browser_monitoring.rb +61 -0
- data/lib/new_relic/stats.rb +6 -6
- data/lib/new_relic/version.rb +4 -4
- data/newrelic.yml +19 -0
- data/newrelic_rpm.gemspec +9 -4
- data/test/active_record_fixtures.rb +5 -5
- data/test/config/test_control.rb +3 -3
- data/test/new_relic/agent/agent/connect_test.rb +27 -6
- data/test/new_relic/agent/agent/start_test.rb +13 -13
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +8 -8
- data/test/new_relic/agent/agent_test.rb +85 -0
- data/test/new_relic/agent/agent_test_controller.rb +9 -9
- data/test/new_relic/agent/agent_test_controller_test.rb +37 -37
- data/test/new_relic/agent/browser_monitoring_test.rb +124 -0
- data/test/new_relic/agent/busy_calculator_test.rb +7 -7
- data/test/new_relic/agent/error_collector/notice_error_test.rb +9 -9
- data/test/new_relic/agent/error_collector_test.rb +54 -54
- data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +69 -69
- data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +36 -0
- data/test/new_relic/agent/instrumentation/metric_frame_test.rb +3 -3
- data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +11 -11
- data/test/new_relic/agent/instrumentation/queue_time_test.rb +38 -35
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +18 -18
- data/test/new_relic/agent/memcache_instrumentation_test.rb +12 -12
- data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +1 -1
- data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +16 -15
- data/test/new_relic/agent/method_tracer_test.rb +60 -60
- data/test/new_relic/agent/mock_scope_listener.rb +8 -8
- data/test/new_relic/agent/rpm_agent_test.rb +26 -26
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +17 -17
- data/test/new_relic/agent/stats_engine/samplers_test.rb +4 -4
- data/test/new_relic/agent/stats_engine/stats_engine_test.rb +51 -51
- data/test/new_relic/agent/transaction_sample_builder_test.rb +36 -36
- data/test/new_relic/agent/transaction_sampler_test.rb +727 -178
- data/test/new_relic/agent/worker_loop_test.rb +4 -4
- data/test/new_relic/collection_helper_test.rb +15 -15
- data/test/new_relic/command/deployments_test.rb +5 -5
- data/test/new_relic/control_test.rb +25 -25
- data/test/new_relic/local_environment_test.rb +11 -11
- data/test/new_relic/metric_spec_test.rb +21 -21
- data/test/new_relic/rack/episodes_test.rb +35 -35
- data/test/new_relic/stats_test.rb +61 -43
- data/test/new_relic/transaction_sample_subtest_test.rb +15 -15
- data/test/new_relic/transaction_sample_test.rb +25 -25
- data/test/new_relic/version_number_test.rb +11 -11
- data/test/test_contexts.rb +7 -7
- data/test/test_helper.rb +6 -6
- data/ui/helpers/developer_mode_helper.rb +67 -67
- data/ui/helpers/google_pie_chart.rb +4 -4
- data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +4 -4
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +7 -7
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +9 -9
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +8 -8
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +9 -9
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +4 -4
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +2 -2
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +8 -8
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +6 -6
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +2 -2
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +6 -6
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +2 -2
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +4 -4
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +4 -4
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +21 -21
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +2 -2
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +6 -6
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +2 -2
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +1 -1
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +8 -8
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +3 -3
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +5 -5
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +20 -20
- metadata +15 -9
- data/lib/new_relic/agent/instrumentation/sequel.rb +0 -109
data/lib/new_relic/control.rb
CHANGED
@@ -63,7 +63,7 @@ module NewRelic
|
|
63
63
|
# Always initialized with a default
|
64
64
|
fetch('apdex_t').to_f
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
def license_key
|
68
68
|
fetch('license_key')
|
69
69
|
end
|
@@ -80,9 +80,10 @@ module NewRelic
|
|
80
80
|
fetch('developer_mode', fetch('developer'))
|
81
81
|
end
|
82
82
|
|
83
|
-
def
|
84
|
-
fetch('
|
83
|
+
def browser_monitoring_auto_instrument?
|
84
|
+
fetch('browser_monitoring', {}).fetch('auto_instrument', true)
|
85
85
|
end
|
86
|
+
|
86
87
|
# True if the app runs in multi-threaded mode
|
87
88
|
def multi_threaded?
|
88
89
|
fetch('multi_threaded')
|
@@ -25,19 +25,16 @@ module NewRelic
|
|
25
25
|
else
|
26
26
|
log! "Starting the New Relic Agent."
|
27
27
|
install_developer_mode rails_config if developer_mode?
|
28
|
-
|
28
|
+
install_browser_monitoring(rails_config)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
return if config.nil? || !config.respond_to?(:middleware) || !
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
::RAILS_DEFAULT_LOGGER.info "Installed episodes middleware"
|
39
|
-
end
|
40
|
-
end
|
32
|
+
def install_browser_monitoring(config)
|
33
|
+
return if config.nil? || !config.respond_to?(:middleware) || !browser_monitoring_auto_instrument?
|
34
|
+
|
35
|
+
require 'new_relic/rack/browser_monitoring'
|
36
|
+
config.middleware.use NewRelic::Rack::BrowserMonitoring
|
37
|
+
::RAILS_DEFAULT_LOGGER.info "Installed browser monitoring middleware"
|
41
38
|
end
|
42
39
|
|
43
40
|
def install_developer_mode(rails_config)
|
@@ -95,7 +92,7 @@ module NewRelic
|
|
95
92
|
gem.name + (version ? "(#{version})" : "")
|
96
93
|
end
|
97
94
|
end
|
98
|
-
|
95
|
+
|
99
96
|
# Collect the Rails::Info into an associative array as well as the list of plugins
|
100
97
|
def append_environment_info
|
101
98
|
local_env.append_environment_value('Rails version'){ ::Rails::VERSION::STRING }
|
@@ -124,7 +121,7 @@ module NewRelic
|
|
124
121
|
end
|
125
122
|
end
|
126
123
|
end
|
127
|
-
|
124
|
+
|
128
125
|
def install_shim
|
129
126
|
super
|
130
127
|
require 'new_relic/agent/instrumentation/controller_instrumentation'
|
@@ -8,7 +8,7 @@ module NewRelic
|
|
8
8
|
|
9
9
|
attr_reader :local_env
|
10
10
|
|
11
|
-
|
11
|
+
|
12
12
|
# Initialize the plugin/gem and start the agent. This does the
|
13
13
|
# necessary configuration based on the framework environment and
|
14
14
|
# determines whether or not to start the agent. If the agent is
|
@@ -116,7 +116,7 @@ module NewRelic
|
|
116
116
|
[]
|
117
117
|
end
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
def config_file
|
121
121
|
File.expand_path(File.join(root,"config","newrelic.yml"))
|
122
122
|
end
|
@@ -34,7 +34,7 @@ module NewRelic
|
|
34
34
|
# if the host is not an IP address, turn it into one
|
35
35
|
NewRelic::Control::Server.new host, (self['port'] || (use_ssl? ? 443 : 80)).to_i, convert_to_ip_address(host)
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
# Check to see if we need to look up the IP address
|
39
39
|
# If it's an IP address already, we pass it through.
|
40
40
|
# If it's nil, or localhost, we don't bother.
|
@@ -48,7 +48,7 @@ module NewRelic
|
|
48
48
|
log.info "Resolved #{host} to #{ip}"
|
49
49
|
ip
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
# Look up the ip address of the host using the pure ruby lookup
|
53
53
|
# to prevent blocking. If that fails, fall back to the regular
|
54
54
|
# IPSocket library. Return nil if we can't find the host ip
|
@@ -83,13 +83,13 @@ module NewRelic
|
|
83
83
|
gather_jruby_info
|
84
84
|
end
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
def gather_jruby_info
|
88
88
|
append_environment_value('JRuby version') { JRUBY_VERSION }
|
89
89
|
append_environment_value('Java VM version') { ENV_JAVA['java.vm.version']}
|
90
90
|
end
|
91
|
-
|
92
|
-
# See what the number of cpus is, works only on linux.
|
91
|
+
|
92
|
+
# See what the number of cpus is, works only on linux.
|
93
93
|
def gather_cpu_info
|
94
94
|
return unless File.readable? '/proc/cpuinfo'
|
95
95
|
@processors = append_environment_value('Processors') do
|
@@ -109,7 +109,7 @@ module NewRelic
|
|
109
109
|
append_environment_value('OS') { `uname -s` } ||
|
110
110
|
append_environment_value('OS') { ENV['OS'] }
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
def gather_system_info
|
114
114
|
gather_architecture_info
|
115
115
|
gather_cpu_info
|
@@ -126,7 +126,7 @@ module NewRelic
|
|
126
126
|
end
|
127
127
|
|
128
128
|
def gather_ar_adapter_info
|
129
|
-
# The name of the database adapter for the current environment.
|
129
|
+
# The name of the database adapter for the current environment.
|
130
130
|
append_environment_value 'Database adapter' do
|
131
131
|
if defined?(ActiveRecord) && defined?(ActiveRecord::Base) &&
|
132
132
|
ActiveRecord::Base.respond_to?(:configurations)
|
@@ -165,14 +165,14 @@ module NewRelic
|
|
165
165
|
append_environment_value 'Dispatcher', @dispatcher.to_s if @dispatcher
|
166
166
|
append_environment_value 'Dispatcher instance id', @dispatcher_instance_id if @dispatcher_instance_id
|
167
167
|
append_environment_value('Environment') { NewRelic::Control.instance.env }
|
168
|
-
|
168
|
+
|
169
169
|
# miscellaneous other helpful debugging information
|
170
170
|
gather_ruby_info
|
171
171
|
gather_system_info
|
172
172
|
gather_revision_info
|
173
173
|
gather_db_info
|
174
174
|
end
|
175
|
-
|
175
|
+
|
176
176
|
# Take a snapshot of the environment information for this application
|
177
177
|
# Returns an associative array
|
178
178
|
def snapshot
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rack'
|
2
|
+
|
3
|
+
module NewRelic::Rack
|
4
|
+
class BrowserMonitoring
|
5
|
+
|
6
|
+
def initialize(app, options = {})
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
# method required by Rack interface
|
11
|
+
def call(env)
|
12
|
+
result = @app.call(env) # [status, headers, response]
|
13
|
+
|
14
|
+
if (NewRelic::Agent.browser_timing_header != "") && should_instrument?(result[0], result[1])
|
15
|
+
response_string = autoinstrument_source(result[2], result[1])
|
16
|
+
|
17
|
+
if (response_string)
|
18
|
+
Rack::Response.new(response_string, result[0], result[1]).finish
|
19
|
+
else
|
20
|
+
result
|
21
|
+
end
|
22
|
+
else
|
23
|
+
result
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def should_instrument?(status, headers)
|
28
|
+
status == 200 && headers["Content-Type"] && headers["Content-Type"].include?("text/html")
|
29
|
+
end
|
30
|
+
|
31
|
+
def autoinstrument_source(response, headers)
|
32
|
+
source = nil
|
33
|
+
response.each {|fragment| (source) ? (source << f) : (source = fragment)}
|
34
|
+
|
35
|
+
body_start = source.index("<body")
|
36
|
+
body_close = source.rindex("</body>")
|
37
|
+
|
38
|
+
if body_start && body_close
|
39
|
+
footer = NewRelic::Agent.browser_timing_footer
|
40
|
+
header = NewRelic::Agent.browser_timing_header
|
41
|
+
|
42
|
+
head_open = source.index("<head")
|
43
|
+
|
44
|
+
if head_open
|
45
|
+
head_close = source.index(">", head_open)
|
46
|
+
|
47
|
+
head_pos = head_close + 1
|
48
|
+
else
|
49
|
+
# put the header right above body start
|
50
|
+
head_pos = body_start
|
51
|
+
end
|
52
|
+
|
53
|
+
source = source[0..(head_pos-1)] + header + source[head_pos..(body_close-1)] + footer + source[body_close..-1]
|
54
|
+
|
55
|
+
headers['Content-Length'] = source.length.to_s if headers['Content-Length']
|
56
|
+
end
|
57
|
+
|
58
|
+
source
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/new_relic/stats.rb
CHANGED
@@ -17,16 +17,16 @@ module NewRelic
|
|
17
17
|
"%.0f ms" % value_ms
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# makes sure we aren't dividing by zero
|
22
22
|
def checked_calculation(numerator, denominator)
|
23
23
|
if denominator.nil? || denominator == 0
|
24
24
|
0.0
|
25
25
|
else
|
26
|
-
numerator / denominator
|
26
|
+
numerator.to_f / denominator
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def average_call_time
|
31
31
|
checked_calculation(total_call_time, call_count)
|
32
32
|
end
|
@@ -70,7 +70,7 @@ module NewRelic
|
|
70
70
|
def update_totals(other)
|
71
71
|
self.total_call_time += other.total_call_time
|
72
72
|
self.total_exclusive_time += other.total_exclusive_time
|
73
|
-
self.sum_of_squares += other.sum_of_squares
|
73
|
+
self.sum_of_squares += other.sum_of_squares
|
74
74
|
end
|
75
75
|
|
76
76
|
def min_time_less?(other)
|
@@ -79,7 +79,7 @@ module NewRelic
|
|
79
79
|
|
80
80
|
def expand_min_max_to(other)
|
81
81
|
self.min_call_time = other.min_call_time if min_time_less?(other)
|
82
|
-
self.max_call_time = other.max_call_time if other.max_call_time > max_call_time
|
82
|
+
self.max_call_time = other.max_call_time if other.max_call_time > max_call_time
|
83
83
|
end
|
84
84
|
|
85
85
|
def merge_attributes(other)
|
@@ -88,7 +88,7 @@ module NewRelic
|
|
88
88
|
self.call_count += other.call_count
|
89
89
|
update_boundaries(other)
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
def merge!(other_stats)
|
93
93
|
Array(other_stats).each do |other|
|
94
94
|
merge_attributes(other)
|
data/lib/new_relic/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
module NewRelic
|
3
3
|
module VERSION #:nodoc:
|
4
|
-
MAJOR =
|
5
|
-
MINOR =
|
6
|
-
TINY =
|
7
|
-
BUILD =
|
4
|
+
MAJOR = 3
|
5
|
+
MINOR = 0
|
6
|
+
TINY = 0
|
7
|
+
BUILD = 'beta1' #'0' # Set to nil for a release, 'beta1', 'alpha', etc for prerelease builds
|
8
8
|
STRING = [MAJOR, MINOR, TINY, BUILD].compact.join('.')
|
9
9
|
end
|
10
10
|
|
data/newrelic.yml
CHANGED
@@ -59,6 +59,15 @@ common: &default_settings
|
|
59
59
|
# log level here.
|
60
60
|
log_level: info
|
61
61
|
|
62
|
+
# Optionally set the path to the log file This is expanded from the
|
63
|
+
# root directory (may be relative or absolute, e.g. 'log/' or
|
64
|
+
# '/var/log/') The agent will attempt to create this directory if it
|
65
|
+
# does not exist.
|
66
|
+
# log_file_path: 'log/'
|
67
|
+
|
68
|
+
# Optionally set the name of the log file, defaults to 'newrelic_agent.log'
|
69
|
+
# log_file_name: 'newrelic_agent.log'
|
70
|
+
|
62
71
|
# The newrelic agent communicates with the RPM service via http by
|
63
72
|
# default. If you want to communicate via https to increase
|
64
73
|
# security, then turn on SSL by setting this value to true. Note,
|
@@ -90,6 +99,16 @@ common: &default_settings
|
|
90
99
|
# http://support.newrelic.com/faqs/general/apdex
|
91
100
|
|
92
101
|
apdex_t: 0.5
|
102
|
+
|
103
|
+
#============================== Browser Monitoring ===============================
|
104
|
+
# New Relic Real User Monitoring gives you insight into the performance real users are
|
105
|
+
# experiencing with your website. This is accomplished by measuring the time it takes for
|
106
|
+
# your users' browsers to download and render your web pages by injecting a small amount
|
107
|
+
# of JavaScript code into the header and footer of each page.
|
108
|
+
browser_monitoring:
|
109
|
+
# By default the agent automatically injects the monitoring JavaScript
|
110
|
+
# into web pages. Set this attribute to false to turn off this behavior.
|
111
|
+
auto_instrument: true
|
93
112
|
|
94
113
|
# Proxy settings for connecting to the RPM server.
|
95
114
|
#
|
data/newrelic_rpm.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{newrelic_rpm}
|
8
|
-
s.version = "
|
8
|
+
s.version = "3.0.0.beta1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bill Kayser", "Justin George"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-04-29}
|
13
13
|
s.description = %q{New Relic RPM is a Ruby performance management system, developed by
|
14
14
|
New Relic, Inc (http://www.newrelic.com). RPM provides you with deep
|
15
15
|
information about the performance of your Ruby on Rails or Merb
|
@@ -40,6 +40,7 @@ http://github.com/newrelic/rpm/tree/master.
|
|
40
40
|
"lib/conditional_vendored_metric_parser.rb",
|
41
41
|
"lib/new_relic/agent.rb",
|
42
42
|
"lib/new_relic/agent/agent.rb",
|
43
|
+
"lib/new_relic/agent/browser_monitoring.rb",
|
43
44
|
"lib/new_relic/agent/busy_calculator.rb",
|
44
45
|
"lib/new_relic/agent/chained_call.rb",
|
45
46
|
"lib/new_relic/agent/error_collector.rb",
|
@@ -64,7 +65,6 @@ http://github.com/newrelic/rpm/tree/master.
|
|
64
65
|
"lib/new_relic/agent/instrumentation/rails3/action_controller.rb",
|
65
66
|
"lib/new_relic/agent/instrumentation/rails3/active_record_instrumentation.rb",
|
66
67
|
"lib/new_relic/agent/instrumentation/rails3/errors.rb",
|
67
|
-
"lib/new_relic/agent/instrumentation/sequel.rb",
|
68
68
|
"lib/new_relic/agent/instrumentation/sinatra.rb",
|
69
69
|
"lib/new_relic/agent/instrumentation/sunspot.rb",
|
70
70
|
"lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb",
|
@@ -79,6 +79,7 @@ http://github.com/newrelic/rpm/tree/master.
|
|
79
79
|
"lib/new_relic/agent/stats_engine/metric_stats.rb",
|
80
80
|
"lib/new_relic/agent/stats_engine/samplers.rb",
|
81
81
|
"lib/new_relic/agent/stats_engine/transactions.rb",
|
82
|
+
"lib/new_relic/agent/transaction_sample_builder.rb",
|
82
83
|
"lib/new_relic/agent/transaction_sampler.rb",
|
83
84
|
"lib/new_relic/agent/worker_loop.rb",
|
84
85
|
"lib/new_relic/collection_helper.rb",
|
@@ -107,6 +108,7 @@ http://github.com/newrelic/rpm/tree/master.
|
|
107
108
|
"lib/new_relic/metric_spec.rb",
|
108
109
|
"lib/new_relic/metrics.rb",
|
109
110
|
"lib/new_relic/noticed_error.rb",
|
111
|
+
"lib/new_relic/rack/browser_monitoring.rb",
|
110
112
|
"lib/new_relic/rack/developer_mode.rb",
|
111
113
|
"lib/new_relic/rack/metric_app.rb",
|
112
114
|
"lib/new_relic/rack/mongrel_rpm.ru",
|
@@ -132,13 +134,16 @@ http://github.com/newrelic/rpm/tree/master.
|
|
132
134
|
"test/new_relic/agent/agent/connect_test.rb",
|
133
135
|
"test/new_relic/agent/agent/start_test.rb",
|
134
136
|
"test/new_relic/agent/agent/start_worker_thread_test.rb",
|
137
|
+
"test/new_relic/agent/agent_test.rb",
|
135
138
|
"test/new_relic/agent/agent_test_controller.rb",
|
136
139
|
"test/new_relic/agent/agent_test_controller_test.rb",
|
137
140
|
"test/new_relic/agent/apdex_from_server_test.rb",
|
141
|
+
"test/new_relic/agent/browser_monitoring_test.rb",
|
138
142
|
"test/new_relic/agent/busy_calculator_test.rb",
|
139
143
|
"test/new_relic/agent/error_collector/notice_error_test.rb",
|
140
144
|
"test/new_relic/agent/error_collector_test.rb",
|
141
145
|
"test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb",
|
146
|
+
"test/new_relic/agent/instrumentation/controller_instrumentation_test.rb",
|
142
147
|
"test/new_relic/agent/instrumentation/instrumentation_test.rb",
|
143
148
|
"test/new_relic/agent/instrumentation/metric_frame_test.rb",
|
144
149
|
"test/new_relic/agent/instrumentation/net_instrumentation_test.rb",
|
@@ -268,7 +273,7 @@ Refer to the README.md file for more information.
|
|
268
273
|
|
269
274
|
Please see http://support.newrelic.com/faqs/docs/ruby-agent-release-notes
|
270
275
|
for a complete description of the features and enhancements available
|
271
|
-
in version
|
276
|
+
in version 3.0 of the Ruby Agent.
|
272
277
|
|
273
278
|
For details on this specific release, refer to the CHANGELOG file.
|
274
279
|
|
@@ -37,7 +37,7 @@ module ActiveRecordFixtures
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
class Shipment < ActiveRecord::Base
|
42
42
|
self.table_name = 'newrelic_test_shipment'
|
43
43
|
has_and_belongs_to_many :orders, :class_name => 'ActiveRecordFixtures::Order'
|
@@ -46,14 +46,14 @@ module ActiveRecordFixtures
|
|
46
46
|
# no other columns
|
47
47
|
end
|
48
48
|
connection.create_table 'orders_shipments', :force => true, :id => false do |t|
|
49
|
-
t.column :order_id, :integer
|
50
|
-
t.column :shipment_id, :integer
|
49
|
+
t.column :order_id, :integer
|
50
|
+
t.column :shipment_id, :integer
|
51
51
|
end
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
def self.teardown
|
55
55
|
connection.drop_table 'orders_shipments'
|
56
56
|
connection.drop_table self.table_name
|
57
57
|
end
|
58
|
-
end
|
58
|
+
end
|
59
59
|
end
|