newrelic_rpm 6.15.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
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