newrelic_rpm 6.15.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +96 -22
  3. data/README.md +2 -2
  4. data/lib/new_relic/agent.rb +0 -6
  5. data/lib/new_relic/agent/autostart.rb +1 -2
  6. data/lib/new_relic/agent/configuration/default_source.rb +270 -104
  7. data/lib/new_relic/agent/configuration/manager.rb +2 -2
  8. data/lib/new_relic/agent/datastores/redis.rb +0 -4
  9. data/lib/new_relic/agent/distributed_tracing.rb +0 -66
  10. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -16
  11. data/lib/new_relic/agent/instrumentation/bunny.rb +10 -152
  12. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  13. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  14. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  15. data/lib/new_relic/agent/instrumentation/curb.rb +9 -241
  16. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  17. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  18. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  19. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  20. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  21. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  22. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +8 -50
  23. data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
  24. data/lib/new_relic/agent/instrumentation/grape.rb +13 -113
  25. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  26. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  27. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  28. data/lib/new_relic/agent/instrumentation/httpclient.rb +8 -30
  29. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  30. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  31. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  32. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  33. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  34. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  35. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  36. data/lib/new_relic/agent/instrumentation/memcache.rb +54 -69
  37. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  38. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +38 -121
  39. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  40. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  41. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  42. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +2 -0
  43. data/lib/new_relic/agent/instrumentation/mongo.rb +7 -0
  44. data/lib/new_relic/agent/instrumentation/net_http.rb +39 -0
  45. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  46. data/lib/new_relic/agent/instrumentation/{net_prepend.rb → net_http/instrumentation.rb} +3 -3
  47. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  48. data/lib/new_relic/agent/instrumentation/padrino.rb +18 -53
  49. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  50. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  51. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  52. data/lib/new_relic/agent/instrumentation/rack.rb +29 -139
  53. data/lib/new_relic/agent/instrumentation/rack/chain.rb +57 -0
  54. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  55. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  56. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +36 -0
  57. data/lib/new_relic/agent/instrumentation/rake.rb +13 -154
  58. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  59. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  60. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  61. data/lib/new_relic/agent/instrumentation/redis.rb +10 -109
  62. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  63. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  64. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  65. data/lib/new_relic/agent/instrumentation/resque.rb +8 -28
  66. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  67. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +33 -0
  68. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  69. data/lib/new_relic/agent/instrumentation/sinatra.rb +20 -158
  70. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  71. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +29 -34
  72. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +118 -0
  73. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  74. data/lib/new_relic/agent/instrumentation/typhoeus.rb +10 -89
  75. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  76. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  77. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  78. data/lib/new_relic/agent/new_relic_service.rb +3 -12
  79. data/lib/new_relic/agent/sql_sampler.rb +1 -1
  80. data/lib/new_relic/agent/transaction.rb +1 -4
  81. data/lib/new_relic/control/frameworks/rails.rb +11 -9
  82. data/lib/new_relic/control/instance_methods.rb +1 -0
  83. data/lib/new_relic/dependency_detection.rb +116 -10
  84. data/lib/new_relic/noticed_error.rb +1 -5
  85. data/lib/new_relic/supportability_helper.rb +1 -2
  86. data/lib/new_relic/version.rb +2 -2
  87. data/newrelic_rpm.gemspec +1 -1
  88. metadata +53 -8
  89. data/cert/cacert.pem +0 -1177
  90. data/lib/new_relic/agent/instrumentation/http.rb +0 -49
  91. data/lib/new_relic/agent/instrumentation/net.rb +0 -70
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic's license terms.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+
5
+ module NewRelic::Agent::Instrumentation
6
+ module Typhoeus
7
+ module Prepend
8
+ include NewRelic::Agent::Instrumentation::Typhoeus
9
+ def run(*args)
10
+ with_tracing { super }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -41,7 +41,6 @@ module NewRelic
41
41
  @configured_collector = collector
42
42
  @request_timeout = Agent.config[:timeout]
43
43
  @ssl_cert_store = nil
44
- @use_bundled_certs = false
45
44
  @in_session = nil
46
45
  @agent_id = nil
47
46
  @shared_tcp_connection = nil
@@ -299,7 +298,7 @@ module NewRelic
299
298
  end
300
299
 
301
300
  def set_cert_store(conn)
302
- if @use_bundled_certs || NewRelic::Agent.config[:ca_bundle_path]
301
+ if NewRelic::Agent.config[:ca_bundle_path]
303
302
  conn.cert_store = ssl_cert_store
304
303
  else
305
304
  ::NewRelic::Agent.logger.debug("Using default security certificates")
@@ -348,13 +347,8 @@ module NewRelic
348
347
  start_connection(conn)
349
348
  conn
350
349
  rescue Timeout::Error
351
- if @use_bundled_certs == false
352
- ::NewRelic::Agent.logger.info("Unable to connect. Falling back to bundled security certificates")
353
- @use_bundled_certs = true
354
- retry
355
- else
356
- raise
357
- end
350
+ ::NewRelic::Agent.logger.info ("Timeout while attempting to connect. You may need to install system-level CA Certificates, as the ruby agent no longer includes these.")
351
+ raise
358
352
  end
359
353
 
360
354
  # The path to the certificate file used to verify the SSL
@@ -363,9 +357,6 @@ module NewRelic
363
357
  if path_override = NewRelic::Agent.config[:ca_bundle_path]
364
358
  NewRelic::Agent.logger.warn("Couldn't find CA bundle from configured ca_bundle_path: #{path_override}") unless File.exist? path_override
365
359
  path_override
366
- else
367
- ::NewRelic::Agent.increment_metric("Supportability/Ruby/Certificate/BundleRequired")
368
- File.expand_path(File.join(control.newrelic_root, 'cert', 'cacert.pem'))
369
360
  end
370
361
  end
371
362
 
@@ -65,7 +65,7 @@ module NewRelic
65
65
  end
66
66
 
67
67
  # This is called when we are done with the transaction.
68
- def on_finishing_transaction(state, name, time=Time.now)
68
+ def on_finishing_transaction(state, name)
69
69
  return unless enabled?
70
70
 
71
71
  data = state.sql_sampler_transaction_data
@@ -464,7 +464,7 @@ module NewRelic
464
464
  @ignore_apdex = options[:ignore_apdex] if options.key? :ignore_apdex
465
465
  @ignore_enduser = options[:ignore_enduser] if options.key? :ignore_enduser
466
466
 
467
- nest_initial_segment if nesting_max_depth == 1
467
+ nest_initial_segment if segments.length == 1
468
468
  nested_name = self.class.nested_transaction_name options[:transaction_name]
469
469
  segment = create_segment nested_name
470
470
  set_default_transaction_name(options[:transaction_name], category)
@@ -571,9 +571,6 @@ module NewRelic
571
571
  AttributeFilter::DST_ERROR_COLLECTOR
572
572
 
573
573
  if http_response_code
574
- add_agent_attribute(:httpResponseCode, http_response_code.to_s, default_destinations)
575
- # Sending status code as an int with http.statusCode key is correct
576
- # The above attribute is deprecated and should be removed in agent version 7.0.0
577
574
  add_agent_attribute(:'http.statusCode', http_response_code, default_destinations)
578
575
  end
579
576
 
@@ -82,15 +82,17 @@ module NewRelic
82
82
  end
83
83
 
84
84
  def install_browser_monitoring(config)
85
- return if defined?(@browser_monitoring_installed) && @browser_monitoring_installed
86
- @browser_monitoring_installed = true
87
- return if config.nil? || !config.respond_to?(:middleware) || !Agent.config[:'browser_monitoring.auto_instrument']
88
- begin
89
- require 'new_relic/rack/browser_monitoring'
90
- config.middleware.use NewRelic::Rack::BrowserMonitoring
91
- ::NewRelic::Agent.logger.debug("Installed New Relic Browser Monitoring middleware")
92
- rescue => e
93
- ::NewRelic::Agent.logger.warn("Error installing New Relic Browser Monitoring middleware", e)
85
+ @install_lock.synchronize do
86
+ return if defined?(@browser_monitoring_installed) && @browser_monitoring_installed
87
+ @browser_monitoring_installed = true
88
+ return if config.nil? || !config.respond_to?(:middleware) || !Agent.config[:'browser_monitoring.auto_instrument']
89
+ begin
90
+ require 'new_relic/rack/browser_monitoring'
91
+ config.middleware.use NewRelic::Rack::BrowserMonitoring
92
+ ::NewRelic::Agent.logger.debug("Installed New Relic Browser Monitoring middleware")
93
+ rescue => e
94
+ ::NewRelic::Agent.logger.warn("Error installing New Relic Browser Monitoring middleware", e)
95
+ end
94
96
  end
95
97
  end
96
98
 
@@ -165,6 +165,7 @@ module NewRelic
165
165
  protected
166
166
 
167
167
  def initialize(local_env, config_file_override=nil)
168
+ @install_lock = Mutex.new
168
169
  @local_env = local_env
169
170
  @started_in_env = nil
170
171
 
@@ -21,6 +21,7 @@ module DependencyDetection
21
21
  end
22
22
 
23
23
  @items << item
24
+ return item
24
25
  end
25
26
 
26
27
  def detect!
@@ -51,16 +52,25 @@ module DependencyDetection
51
52
  class Dependent
52
53
  attr_reader :executed
53
54
  attr_accessor :name
55
+ attr_writer :config_name
56
+ attr_reader :dependencies
57
+ attr_reader :prepend_conflicts
58
+
59
+
54
60
  def executed!
55
61
  @executed = true
56
62
  end
57
63
 
58
- attr_reader :dependencies
64
+ def config_name
65
+ @config_name || @name
66
+ end
59
67
 
60
68
  def initialize
61
69
  @dependencies = []
62
70
  @executes = []
71
+ @prepend_conflicts = []
63
72
  @name = nil
73
+ @config_name = nil
64
74
  end
65
75
 
66
76
  def dependencies_satisfied?
@@ -70,13 +80,46 @@ module DependencyDetection
70
80
  def source_location_for klass, method_name
71
81
  Object.instance_method(:method).bind(klass.allocate).call(method_name).source_location.to_s
72
82
  end
73
-
83
+
84
+ # Extracts the instrumented library name from the instrumenting module's name
85
+ # Given "NewRelic::Agent::Instrumentation::NetHTTP::Prepend"
86
+ # Will extract "NetHTTP" which is in the 2nd to last spot
87
+ def extract_supportability_name instrumenting_module
88
+ instrumenting_module.to_s.split("::")[-2]
89
+ end
90
+
91
+ def log_and_instrument method, instrumenting_module, supportability_name
92
+ supportability_name ||= extract_supportability_name(instrumenting_module)
93
+ NewRelic::Agent.logger.info "Installing New Relic supported #{supportability_name} instrumentation using #{method}"
94
+ NewRelic::Agent.record_metric("Supportability/Instrumentation/#{supportability_name}/#{method}", 0.0)
95
+ yield
96
+ end
97
+
98
+ def prepend_instrument target_class, instrumenting_module, supportability_name=nil
99
+ log_and_instrument("Prepend", instrumenting_module, supportability_name) do
100
+ target_class.send :prepend, instrumenting_module
101
+ end
102
+ end
103
+
104
+ def chain_instrument instrumenting_module, supportability_name=nil
105
+ log_and_instrument("MethodChaining", instrumenting_module, supportability_name) do
106
+ instrumenting_module.instrument!
107
+ end
108
+ end
109
+
110
+ def chain_instrument_target target, instrumenting_module, supportability_name=nil
111
+ NewRelic::Agent.logger.info "Installing deferred #{target} instrumentation"
112
+ log_and_instrument("MethodChaining", instrumenting_module, supportability_name) do
113
+ instrumenting_module.instrument! target
114
+ end
115
+ end
116
+
74
117
  def execute
75
118
  @executes.each do |x|
76
119
  begin
77
120
  x.call
78
121
  rescue => err
79
- NewRelic::Agent.logger.error( "Error while installing #{self.name} instrumentation:", err )
122
+ NewRelic::Agent.logger.error "Error while installing #{self.name} instrumentation:", err
80
123
  break
81
124
  end
82
125
  end
@@ -102,24 +145,87 @@ module DependencyDetection
102
145
  end
103
146
 
104
147
  def allowed_by_config?
105
- # If we don't have a name, can't check config so allow it
106
- return true if self.name.nil?
148
+ !(disabled_configured? || deprecated_disabled_configured?)
149
+ end
150
+
151
+ # TODO: Remove in 8.0
152
+ # will only return true if a disabled key is found and is truthy
153
+ def deprecated_disabled_configured?
154
+ return false if self.name.nil?
107
155
 
108
156
  key = "disable_#{self.name}".to_sym
109
- if (::NewRelic::Agent.config[key] == true)
110
- ::NewRelic::Agent.logger.debug("Not installing #{self.name} instrumentation because of configuration #{key}")
111
- false
112
- else
113
- true
157
+ return false unless ::NewRelic::Agent.config[key] == true
158
+
159
+ ::NewRelic::Agent.logger.debug("Not installing #{self.name} instrumentation because of configuration #{key}")
160
+ ::NewRelic::Agent.logger.debug \
161
+ "[DEPRECATED] configuration #{key} for #{self.name} will be removed in the next major release." \
162
+ " Use `#{config_key}` with one of `#{VALID_CONFIG_VALUES.map(&:to_s).inspect}`"
163
+
164
+ return true
165
+ end
166
+
167
+ def config_key
168
+ return nil if self.config_name.nil?
169
+ @config_key ||= "instrumentation.#{self.config_name}".to_sym
170
+ end
171
+
172
+ VALID_CONFIG_VALUES = [:auto, :disabled, :prepend, :chain]
173
+ AUTO_CONFIG_VALUE = VALID_CONFIG_VALUES[0]
174
+
175
+ VALID_CONFIG_VALUES.each do |value|
176
+ define_method "#{value}_configured?" do
177
+ value == config_value
114
178
  end
115
179
  end
116
180
 
181
+ # returns only a valid value for instrumentation configuration
182
+ # If user uses "enabled" it's converted to "auto"
183
+ def valid_config_value retrieved_value
184
+ VALID_CONFIG_VALUES.include?(retrieved_value) ? retrieved_value : AUTO_CONFIG_VALUE
185
+ end
186
+
187
+ # fetches and transform potentially invalid value given to one of the valid config values
188
+ # logs the resolved value during debug mode.
189
+ def fetch_config_value(key)
190
+ valid_value = valid_config_value(::NewRelic::Agent.config[key].to_s.to_sym)
191
+ ::NewRelic::Agent.logger.debug("Using #{valid_value} configuration value for #{self.name} to configure instrumentation")
192
+ return valid_value
193
+ end
194
+
195
+ def config_value
196
+ return AUTO_CONFIG_VALUE unless config_key
197
+ fetch_config_value(config_key)
198
+ end
199
+
117
200
  def named(new_name)
118
201
  self.name = new_name
119
202
  end
120
203
 
204
+ def configure_with(new_config_name)
205
+ self.config_name = new_config_name
206
+ end
207
+
121
208
  def executes &block
122
209
  @executes << block if block_given?
123
210
  end
211
+
212
+ def conflicts_with_prepend &block
213
+ @prepend_conflicts << block if block_given?
214
+ end
215
+
216
+ def use_prepend?
217
+ prepend_configured? || (auto_configured? && !prepend_conflicts?)
218
+ end
219
+
220
+ def prepend_conflicts?
221
+ @prepend_conflicts.any? do |conflict|
222
+ begin
223
+ conflict.call
224
+ rescue => err
225
+ NewRelic::Agent.logger.error( "Error while checking prepend conflicts #{self.name}:", err )
226
+ false # assumes no conflicts exist since `prepend` is preferred method of instrumenting
227
+ end
228
+ end
229
+ end
124
230
  end
125
231
  end
@@ -70,11 +70,7 @@ class NewRelic::NoticedError
70
70
  end
71
71
 
72
72
  def self.passes_message_allowlist(exception_class)
73
- # For backwards compatibility until we remove :'strip_exception_messages.whitelist' config option
74
-
75
- allowed = NewRelic::Agent.config[:'strip_exception_messages.allowed_classes'].concat(NewRelic::Agent.config[:'strip_exception_messages.whitelist'])
76
-
77
- allowed.any? do |klass|
73
+ NewRelic::Agent.config[:'strip_exception_messages.allowed_classes'].any? do |klass|
78
74
  exception_class <= klass
79
75
  end
80
76
  end
@@ -13,7 +13,6 @@ module NewRelic
13
13
  API_SUPPORTABILITY_METRICS = [
14
14
  :insert_distributed_trace_headers,
15
15
  :accept_distributed_trace_headers,
16
- :create_distributed_trace_headers,
17
16
  :add_custom_attributes,
18
17
  :add_custom_span_attributes,
19
18
  :add_instrumentation,
@@ -75,7 +74,7 @@ module NewRelic
75
74
  caller_location = caller_locations.first.label
76
75
 
77
76
  message = "Bad argument passed to ##{caller_location}. " \
78
- "Expected #{klass} for `#{name}` but got #{headers.class}"
77
+ "Expected #{klass} for `#{name}` but got #{arg.class}"
79
78
 
80
79
  NewRelic::Agent.logger.warn message
81
80
  nil
@@ -10,8 +10,8 @@ module NewRelic
10
10
  parts.compact.join('.')
11
11
  end
12
12
 
13
- MAJOR = 6
14
- MINOR = 15
13
+ MAJOR = 7
14
+ MINOR = 0
15
15
  TINY = 0
16
16
 
17
17
  begin
data/newrelic_rpm.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.version = NewRelic::VERSION::STRING
11
11
  s.required_ruby_version = '>= 2.0.0'
12
12
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
13
- s.authors = [ "Rachel Klein", "Tanna McClure", "Michael Lang" ]
13
+ s.authors = [ "Aaron Huntsman", "Tanna McClure", "Michael Lang" ]
14
14
  s.date = Time.now.strftime('%Y-%m-%d')
15
15
  s.licenses = ['Apache-2.0']
16
16
  s.description = <<-EOS
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.15.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Rachel Klein
7
+ - Aaron Huntsman
8
8
  - Tanna McClure
9
9
  - Michael Lang
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-01-19 00:00:00.000000000 Z
13
+ date: 2021-04-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -217,7 +217,6 @@ files:
217
217
  - bin/newrelic
218
218
  - bin/newrelic_cmd
219
219
  - bin/nrdebug
220
- - cert/cacert.pem
221
220
  - config.dot
222
221
  - config/database.yml
223
222
  - init.rb
@@ -311,32 +310,63 @@ files:
311
310
  - lib/new_relic/agent/instrumentation/acts_as_solr.rb
312
311
  - lib/new_relic/agent/instrumentation/authlogic.rb
313
312
  - lib/new_relic/agent/instrumentation/bunny.rb
313
+ - lib/new_relic/agent/instrumentation/bunny/chain.rb
314
+ - lib/new_relic/agent/instrumentation/bunny/instrumentation.rb
315
+ - lib/new_relic/agent/instrumentation/bunny/prepend.rb
314
316
  - lib/new_relic/agent/instrumentation/controller_instrumentation.rb
315
317
  - lib/new_relic/agent/instrumentation/curb.rb
318
+ - lib/new_relic/agent/instrumentation/curb/chain.rb
319
+ - lib/new_relic/agent/instrumentation/curb/instrumentation.rb
320
+ - lib/new_relic/agent/instrumentation/curb/prepend.rb
316
321
  - lib/new_relic/agent/instrumentation/data_mapper.rb
322
+ - lib/new_relic/agent/instrumentation/delayed_job/chain.rb
323
+ - lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb
324
+ - lib/new_relic/agent/instrumentation/delayed_job/prepend.rb
317
325
  - lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb
318
326
  - lib/new_relic/agent/instrumentation/excon.rb
319
327
  - lib/new_relic/agent/instrumentation/excon/connection.rb
320
328
  - lib/new_relic/agent/instrumentation/excon/middleware.rb
321
329
  - lib/new_relic/agent/instrumentation/grape.rb
322
- - lib/new_relic/agent/instrumentation/http.rb
330
+ - lib/new_relic/agent/instrumentation/grape/chain.rb
331
+ - lib/new_relic/agent/instrumentation/grape/instrumentation.rb
332
+ - lib/new_relic/agent/instrumentation/grape/prepend.rb
323
333
  - lib/new_relic/agent/instrumentation/httpclient.rb
334
+ - lib/new_relic/agent/instrumentation/httpclient/chain.rb
335
+ - lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb
336
+ - lib/new_relic/agent/instrumentation/httpclient/prepend.rb
337
+ - lib/new_relic/agent/instrumentation/httprb.rb
338
+ - lib/new_relic/agent/instrumentation/httprb/chain.rb
339
+ - lib/new_relic/agent/instrumentation/httprb/instrumentation.rb
340
+ - lib/new_relic/agent/instrumentation/httprb/prepend.rb
324
341
  - lib/new_relic/agent/instrumentation/ignore_actions.rb
325
342
  - lib/new_relic/agent/instrumentation/memcache.rb
343
+ - lib/new_relic/agent/instrumentation/memcache/chain.rb
326
344
  - lib/new_relic/agent/instrumentation/memcache/dalli.rb
345
+ - lib/new_relic/agent/instrumentation/memcache/helper.rb
346
+ - lib/new_relic/agent/instrumentation/memcache/instrumentation.rb
347
+ - lib/new_relic/agent/instrumentation/memcache/prepend.rb
327
348
  - lib/new_relic/agent/instrumentation/merb/controller.rb
328
349
  - lib/new_relic/agent/instrumentation/merb/errors.rb
329
350
  - lib/new_relic/agent/instrumentation/middleware_proxy.rb
330
351
  - lib/new_relic/agent/instrumentation/middleware_tracing.rb
331
352
  - lib/new_relic/agent/instrumentation/mongo.rb
332
353
  - lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb
333
- - lib/new_relic/agent/instrumentation/net.rb
334
- - lib/new_relic/agent/instrumentation/net_prepend.rb
354
+ - lib/new_relic/agent/instrumentation/net_http.rb
355
+ - lib/new_relic/agent/instrumentation/net_http/chain.rb
356
+ - lib/new_relic/agent/instrumentation/net_http/instrumentation.rb
357
+ - lib/new_relic/agent/instrumentation/net_http/prepend.rb
335
358
  - lib/new_relic/agent/instrumentation/notifications_subscriber.rb
336
359
  - lib/new_relic/agent/instrumentation/padrino.rb
360
+ - lib/new_relic/agent/instrumentation/padrino/chain.rb
361
+ - lib/new_relic/agent/instrumentation/padrino/instrumentation.rb
362
+ - lib/new_relic/agent/instrumentation/padrino/prepend.rb
337
363
  - lib/new_relic/agent/instrumentation/passenger_instrumentation.rb
338
364
  - lib/new_relic/agent/instrumentation/queue_time.rb
339
365
  - lib/new_relic/agent/instrumentation/rack.rb
366
+ - lib/new_relic/agent/instrumentation/rack/chain.rb
367
+ - lib/new_relic/agent/instrumentation/rack/helpers.rb
368
+ - lib/new_relic/agent/instrumentation/rack/instrumentation.rb
369
+ - lib/new_relic/agent/instrumentation/rack/prepend.rb
340
370
  - lib/new_relic/agent/instrumentation/rails/action_controller.rb
341
371
  - lib/new_relic/agent/instrumentation/rails/action_web_service.rb
342
372
  - lib/new_relic/agent/instrumentation/rails3/action_controller.rb
@@ -346,16 +376,31 @@ files:
346
376
  - lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb
347
377
  - lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb
348
378
  - lib/new_relic/agent/instrumentation/rake.rb
379
+ - lib/new_relic/agent/instrumentation/rake/chain.rb
380
+ - lib/new_relic/agent/instrumentation/rake/instrumentation.rb
381
+ - lib/new_relic/agent/instrumentation/rake/prepend.rb
349
382
  - lib/new_relic/agent/instrumentation/redis.rb
383
+ - lib/new_relic/agent/instrumentation/redis/chain.rb
384
+ - lib/new_relic/agent/instrumentation/redis/instrumentation.rb
385
+ - lib/new_relic/agent/instrumentation/redis/prepend.rb
350
386
  - lib/new_relic/agent/instrumentation/resque.rb
387
+ - lib/new_relic/agent/instrumentation/resque/chain.rb
388
+ - lib/new_relic/agent/instrumentation/resque/instrumentation.rb
389
+ - lib/new_relic/agent/instrumentation/resque/prepend.rb
351
390
  - lib/new_relic/agent/instrumentation/sequel.rb
352
391
  - lib/new_relic/agent/instrumentation/sequel_helper.rb
353
392
  - lib/new_relic/agent/instrumentation/sidekiq.rb
354
393
  - lib/new_relic/agent/instrumentation/sinatra.rb
394
+ - lib/new_relic/agent/instrumentation/sinatra/chain.rb
355
395
  - lib/new_relic/agent/instrumentation/sinatra/ignorer.rb
396
+ - lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb
397
+ - lib/new_relic/agent/instrumentation/sinatra/prepend.rb
356
398
  - lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb
357
399
  - lib/new_relic/agent/instrumentation/sunspot.rb
358
400
  - lib/new_relic/agent/instrumentation/typhoeus.rb
401
+ - lib/new_relic/agent/instrumentation/typhoeus/chain.rb
402
+ - lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb
403
+ - lib/new_relic/agent/instrumentation/typhoeus/prepend.rb
359
404
  - lib/new_relic/agent/internal_agent_error.rb
360
405
  - lib/new_relic/agent/javascript_instrumentor.rb
361
406
  - lib/new_relic/agent/log_once.rb
@@ -525,7 +570,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
525
570
  - !ruby/object:Gem::Version
526
571
  version: 1.3.1
527
572
  requirements: []
528
- rubygems_version: 3.1.4
573
+ rubygems_version: 3.1.6
529
574
  signing_key:
530
575
  specification_version: 4
531
576
  summary: New Relic Ruby Agent