newrelic_rpm 6.9.0.363 → 6.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  5. data/.github/actions/annotate/README.md +79 -0
  6. data/.github/actions/annotate/action.yml +6 -0
  7. data/.github/actions/annotate/dist/index.js +433 -0
  8. data/.github/actions/annotate/index.js +25 -0
  9. data/.github/actions/annotate/package-lock.json +172 -0
  10. data/.github/actions/annotate/package.json +30 -0
  11. data/.github/actions/annotate/pre-commit +5 -0
  12. data/.github/actions/build-ruby/README.md +79 -0
  13. data/.github/actions/build-ruby/action.yml +15 -0
  14. data/.github/actions/build-ruby/dist/index.js +52683 -0
  15. data/.github/actions/build-ruby/index.js +514 -0
  16. data/.github/actions/build-ruby/package-lock.json +581 -0
  17. data/.github/actions/build-ruby/package.json +32 -0
  18. data/.github/actions/build-ruby/pre-commit +5 -0
  19. data/.github/pull_request_template.md +16 -0
  20. data/.github/workflows/ci.yml +212 -0
  21. data/.github/workflows/pr_review_checklist.yml +22 -0
  22. data/.github/workflows/release.yml +78 -0
  23. data/.github/workflows/scripts/rubygems-authenticate.py +13 -0
  24. data/.github/workflows/scripts/rubygems-publish.rb +32 -0
  25. data/.github/workflows/snyk.yml +27 -0
  26. data/.github/workflows/stale.yml +21 -0
  27. data/.gitignore +6 -0
  28. data/CHANGELOG.md +254 -10
  29. data/CONTRIBUTING.md +106 -19
  30. data/Gemfile +6 -2
  31. data/LICENSE +208 -38
  32. data/README.md +81 -85
  33. data/ROADMAP.md +24 -0
  34. data/Rakefile +2 -0
  35. data/THIRD_PARTY_NOTICES.md +213 -0
  36. data/bin/nrdebug +1 -1
  37. data/init.rb +1 -1
  38. data/install.rb +1 -1
  39. data/lib/new_relic/agent.rb +14 -6
  40. data/lib/new_relic/agent/adaptive_sampler.rb +1 -1
  41. data/lib/new_relic/agent/agent.rb +15 -6
  42. data/lib/new_relic/agent/agent_logger.rb +1 -1
  43. data/lib/new_relic/agent/attribute_filter.rb +1 -1
  44. data/lib/new_relic/agent/attribute_processing.rb +1 -1
  45. data/lib/new_relic/agent/attributes.rb +3 -1
  46. data/lib/new_relic/agent/audit_logger.rb +1 -1
  47. data/lib/new_relic/agent/autostart.rb +1 -1
  48. data/lib/new_relic/agent/chained_call.rb +1 -1
  49. data/lib/new_relic/agent/commands/agent_command.rb +1 -1
  50. data/lib/new_relic/agent/commands/agent_command_router.rb +1 -1
  51. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -1
  52. data/lib/new_relic/agent/configuration.rb +1 -1
  53. data/lib/new_relic/agent/configuration/default_source.rb +28 -1
  54. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -1
  55. data/lib/new_relic/agent/configuration/environment_source.rb +1 -1
  56. data/lib/new_relic/agent/configuration/event_harvest_config.rb +1 -1
  57. data/lib/new_relic/agent/configuration/high_security_source.rb +1 -1
  58. data/lib/new_relic/agent/configuration/manager.rb +1 -1
  59. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  60. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  61. data/lib/new_relic/agent/configuration/security_policy_source.rb +1 -1
  62. data/lib/new_relic/agent/configuration/server_source.rb +1 -1
  63. data/lib/new_relic/agent/configuration/yaml_source.rb +1 -1
  64. data/lib/new_relic/agent/connect/request_builder.rb +1 -1
  65. data/lib/new_relic/agent/connect/response_handler.rb +1 -1
  66. data/lib/new_relic/agent/custom_event_aggregator.rb +1 -1
  67. data/lib/new_relic/agent/database.rb +1 -1
  68. data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -1
  69. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  70. data/lib/new_relic/agent/database/obfuscator.rb +1 -1
  71. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -1
  72. data/lib/new_relic/agent/datastores.rb +1 -1
  73. data/lib/new_relic/agent/datastores/metric_helper.rb +1 -1
  74. data/lib/new_relic/agent/datastores/mongo.rb +2 -2
  75. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +1 -1
  76. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  77. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +1 -1
  78. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +1 -1
  79. data/lib/new_relic/agent/datastores/redis.rb +1 -1
  80. data/lib/new_relic/agent/deprecator.rb +1 -1
  81. data/lib/new_relic/agent/distributed_tracing.rb +1 -1
  82. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +3 -2
  83. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +1 -1
  84. data/lib/new_relic/agent/distributed_tracing/{distributed_trace_intrinsics.rb → distributed_trace_attributes.rb} +9 -5
  85. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +1 -1
  86. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +3 -4
  87. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +1 -1
  88. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +1 -1
  89. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +2 -2
  90. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  91. data/lib/new_relic/agent/error_collector.rb +31 -12
  92. data/lib/new_relic/agent/error_event_aggregator.rb +5 -5
  93. data/lib/new_relic/agent/error_trace_aggregator.rb +1 -1
  94. data/lib/new_relic/agent/event_aggregator.rb +1 -1
  95. data/lib/new_relic/agent/event_buffer.rb +1 -1
  96. data/lib/new_relic/agent/event_listener.rb +1 -1
  97. data/lib/new_relic/agent/event_loop.rb +1 -1
  98. data/lib/new_relic/agent/external.rb +1 -1
  99. data/lib/new_relic/agent/guid_generator.rb +1 -1
  100. data/lib/new_relic/agent/harvester.rb +1 -1
  101. data/lib/new_relic/agent/heap.rb +1 -1
  102. data/lib/new_relic/agent/hostname.rb +8 -2
  103. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  104. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +25 -20
  105. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +29 -14
  106. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +18 -22
  107. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +11 -12
  108. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +17 -5
  109. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +5 -7
  110. data/lib/new_relic/agent/http_clients/uri_util.rb +12 -11
  111. data/lib/new_relic/agent/instrumentation.rb +1 -1
  112. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +5 -6
  113. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +5 -1
  114. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +12 -3
  115. data/lib/new_relic/agent/instrumentation/active_job.rb +1 -1
  116. data/lib/new_relic/agent/instrumentation/active_merchant.rb +1 -1
  117. data/lib/new_relic/agent/instrumentation/active_record.rb +85 -38
  118. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +82 -24
  119. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +1 -1
  120. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +92 -34
  121. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +8 -3
  122. data/lib/new_relic/agent/instrumentation/active_storage.rb +1 -1
  123. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +9 -5
  124. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +24 -8
  125. data/lib/new_relic/agent/instrumentation/authlogic.rb +1 -1
  126. data/lib/new_relic/agent/instrumentation/bunny.rb +114 -51
  127. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +1 -1
  128. data/lib/new_relic/agent/instrumentation/curb.rb +92 -27
  129. data/lib/new_relic/agent/instrumentation/data_mapper.rb +4 -2
  130. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +61 -25
  131. data/lib/new_relic/agent/instrumentation/excon.rb +1 -1
  132. data/lib/new_relic/agent/instrumentation/excon/connection.rb +7 -4
  133. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -2
  134. data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
  135. data/lib/new_relic/agent/instrumentation/http.rb +6 -3
  136. data/lib/new_relic/agent/instrumentation/httpclient.rb +5 -3
  137. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  138. data/lib/new_relic/agent/instrumentation/memcache.rb +4 -2
  139. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +7 -3
  140. data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
  141. data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
  142. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +12 -4
  143. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +9 -7
  144. data/lib/new_relic/agent/instrumentation/mongo.rb +10 -4
  145. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +36 -3
  146. data/lib/new_relic/agent/instrumentation/net.rb +59 -22
  147. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +26 -2
  148. data/lib/new_relic/agent/instrumentation/padrino.rb +40 -16
  149. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +1 -1
  150. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  151. data/lib/new_relic/agent/instrumentation/rack.rb +36 -13
  152. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +1 -1
  153. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
  154. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +1 -1
  155. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
  156. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +1 -1
  157. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +1 -1
  158. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +1 -1
  159. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +1 -1
  160. data/lib/new_relic/agent/instrumentation/rake.rb +55 -20
  161. data/lib/new_relic/agent/instrumentation/redis.rb +141 -56
  162. data/lib/new_relic/agent/instrumentation/resque.rb +1 -1
  163. data/lib/new_relic/agent/instrumentation/sequel.rb +1 -1
  164. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  165. data/lib/new_relic/agent/instrumentation/sidekiq.rb +48 -24
  166. data/lib/new_relic/agent/instrumentation/sinatra.rb +62 -23
  167. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  169. data/lib/new_relic/agent/instrumentation/sunspot.rb +1 -1
  170. data/lib/new_relic/agent/instrumentation/typhoeus.rb +23 -6
  171. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  172. data/lib/new_relic/agent/javascript_instrumentor.rb +1 -1
  173. data/lib/new_relic/agent/log_once.rb +1 -1
  174. data/lib/new_relic/agent/logging.rb +2 -2
  175. data/lib/new_relic/agent/memory_logger.rb +1 -1
  176. data/lib/new_relic/agent/messaging.rb +1 -1
  177. data/lib/new_relic/agent/method_tracer.rb +16 -5
  178. data/lib/new_relic/agent/method_tracer_helpers.rb +2 -2
  179. data/lib/new_relic/agent/monitors.rb +1 -1
  180. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +1 -1
  181. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +1 -1
  182. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -1
  183. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +1 -1
  184. data/lib/new_relic/agent/new_relic_service.rb +26 -5
  185. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  186. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -1
  187. data/lib/new_relic/agent/new_relic_service/marshaller.rb +1 -1
  188. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +1 -1
  189. data/lib/new_relic/agent/noticible_error.rb +22 -0
  190. data/lib/new_relic/agent/null_logger.rb +1 -1
  191. data/lib/new_relic/agent/obfuscator.rb +1 -1
  192. data/lib/new_relic/agent/parameter_filtering.rb +1 -1
  193. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -1
  194. data/lib/new_relic/agent/pipe_channel_manager.rb +1 -1
  195. data/lib/new_relic/agent/pipe_service.rb +1 -1
  196. data/lib/new_relic/agent/prepend_supportability.rb +1 -1
  197. data/lib/new_relic/agent/priority_sampled_buffer.rb +8 -5
  198. data/lib/new_relic/agent/range_extensions.rb +1 -1
  199. data/lib/new_relic/agent/rules_engine.rb +1 -1
  200. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +1 -1
  201. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -1
  202. data/lib/new_relic/agent/sampler.rb +1 -1
  203. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  204. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  205. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -1
  206. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  207. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  208. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -1
  209. data/lib/new_relic/agent/span_event_aggregator.rb +1 -1
  210. data/lib/new_relic/agent/span_event_primitive.rb +71 -37
  211. data/lib/new_relic/agent/sql_sampler.rb +4 -4
  212. data/lib/new_relic/agent/stats.rb +1 -1
  213. data/lib/new_relic/agent/stats_engine.rb +1 -1
  214. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  215. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -1
  216. data/lib/new_relic/agent/supported_versions.rb +1 -1
  217. data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -1
  218. data/lib/new_relic/agent/system_info.rb +13 -4
  219. data/lib/new_relic/agent/threading/agent_thread.rb +1 -1
  220. data/lib/new_relic/agent/threading/backtrace_node.rb +1 -1
  221. data/lib/new_relic/agent/threading/backtrace_service.rb +1 -1
  222. data/lib/new_relic/agent/threading/thread_profile.rb +1 -1
  223. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  224. data/lib/new_relic/agent/tracer.rb +31 -16
  225. data/lib/new_relic/agent/transaction.rb +67 -46
  226. data/lib/new_relic/agent/transaction/abstract_segment.rb +29 -2
  227. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
  228. data/lib/new_relic/agent/transaction/distributed_tracer.rb +3 -3
  229. data/lib/new_relic/agent/transaction/distributed_tracing.rb +2 -2
  230. data/lib/new_relic/agent/transaction/external_request_segment.rb +28 -12
  231. data/lib/new_relic/agent/transaction/message_broker_segment.rb +1 -1
  232. data/lib/new_relic/agent/transaction/request_attributes.rb +1 -1
  233. data/lib/new_relic/agent/transaction/segment.rb +23 -3
  234. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -1
  235. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  236. data/lib/new_relic/agent/transaction/trace.rb +1 -1
  237. data/lib/new_relic/agent/transaction/trace_builder.rb +1 -1
  238. data/lib/new_relic/agent/transaction/trace_context.rb +1 -1
  239. data/lib/new_relic/agent/transaction/trace_node.rb +1 -1
  240. data/lib/new_relic/agent/transaction/tracing.rb +1 -1
  241. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  242. data/lib/new_relic/agent/transaction_error_primitive.rb +8 -6
  243. data/lib/new_relic/agent/transaction_event_aggregator.rb +1 -1
  244. data/lib/new_relic/agent/transaction_event_primitive.rb +3 -3
  245. data/lib/new_relic/agent/transaction_event_recorder.rb +1 -1
  246. data/lib/new_relic/agent/transaction_metrics.rb +1 -1
  247. data/lib/new_relic/agent/transaction_sampler.rb +1 -1
  248. data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -1
  249. data/lib/new_relic/agent/utilization/aws.rb +1 -1
  250. data/lib/new_relic/agent/utilization/azure.rb +1 -1
  251. data/lib/new_relic/agent/utilization/gcp.rb +1 -1
  252. data/lib/new_relic/agent/utilization/pcf.rb +1 -1
  253. data/lib/new_relic/agent/utilization/vendor.rb +1 -1
  254. data/lib/new_relic/agent/utilization_data.rb +1 -1
  255. data/lib/new_relic/agent/vm.rb +1 -1
  256. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  257. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  258. data/lib/new_relic/agent/vm/mri_vm.rb +1 -1
  259. data/lib/new_relic/agent/vm/snapshot.rb +1 -1
  260. data/lib/new_relic/agent/worker_loop.rb +1 -1
  261. data/lib/new_relic/cli/command.rb +1 -1
  262. data/lib/new_relic/cli/commands/deployments.rb +1 -1
  263. data/lib/new_relic/cli/commands/install.rb +4 -3
  264. data/lib/new_relic/coerce.rb +1 -1
  265. data/lib/new_relic/collection_helper.rb +1 -1
  266. data/lib/new_relic/constants.rb +5 -1
  267. data/lib/new_relic/control.rb +1 -1
  268. data/lib/new_relic/control/class_methods.rb +1 -1
  269. data/lib/new_relic/control/frameworks.rb +1 -1
  270. data/lib/new_relic/control/frameworks/external.rb +1 -1
  271. data/lib/new_relic/control/frameworks/merb.rb +1 -1
  272. data/lib/new_relic/control/frameworks/rails.rb +1 -1
  273. data/lib/new_relic/control/frameworks/rails3.rb +1 -1
  274. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  275. data/lib/new_relic/control/frameworks/rails_notifications.rb +1 -1
  276. data/lib/new_relic/control/frameworks/ruby.rb +1 -1
  277. data/lib/new_relic/control/frameworks/sinatra.rb +1 -1
  278. data/lib/new_relic/control/instance_methods.rb +1 -1
  279. data/lib/new_relic/control/instrumentation.rb +1 -1
  280. data/lib/new_relic/control/server_methods.rb +1 -1
  281. data/lib/new_relic/delayed_job_injection.rb +1 -1
  282. data/lib/new_relic/dependency_detection.rb +1 -1
  283. data/lib/new_relic/environment_report.rb +6 -2
  284. data/lib/new_relic/helper.rb +1 -1
  285. data/lib/new_relic/language_support.rb +1 -1
  286. data/lib/new_relic/latest_changes.rb +2 -2
  287. data/lib/new_relic/local_environment.rb +1 -1
  288. data/lib/new_relic/metric_data.rb +1 -1
  289. data/lib/new_relic/metric_spec.rb +1 -1
  290. data/lib/new_relic/noticed_error.rb +29 -10
  291. data/lib/new_relic/rack.rb +1 -1
  292. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  293. data/lib/new_relic/rack/agent_middleware.rb +1 -1
  294. data/lib/new_relic/rack/browser_monitoring.rb +3 -2
  295. data/lib/new_relic/recipes.rb +1 -1
  296. data/lib/new_relic/recipes/capistrano3.rb +1 -1
  297. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -1
  298. data/lib/new_relic/supportability_helper.rb +1 -1
  299. data/lib/new_relic/version.rb +3 -3
  300. data/lib/newrelic_rpm.rb +1 -1
  301. data/lib/sequel/extensions/newrelic_instrumentation.rb +1 -1
  302. data/lib/sequel/plugins/newrelic_instrumentation.rb +1 -1
  303. data/lib/tasks/all.rb +1 -1
  304. data/lib/tasks/multiverse.rb +35 -1
  305. data/lib/tasks/newrelic.rb +1 -1
  306. data/lib/tasks/tests.rake +1 -1
  307. data/newrelic_rpm.gemspec +10 -9
  308. data/recipes/newrelic.rb +1 -1
  309. data/test/agent_helper.rb +237 -70
  310. metadata +42 -18
  311. data/.travis.yml +0 -210
  312. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  313. data/lib/new_relic/metrics.rb +0 -13
  314. data/true +0 -0
@@ -0,0 +1,21 @@
1
+ name: "Close stale issues"
2
+ on:
3
+ schedule:
4
+ - cron: "0 0 * * *"
5
+
6
+ jobs:
7
+ stale:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/stale@v3
11
+ with:
12
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
13
+ stale-issue-message: 'This has been marked stale after 30 days with no activity. It will be closed in 5 days if there is no activity.'
14
+ stale-pr-message: 'Stale pull request message'
15
+ days-before-stale: 30
16
+ days-before-close: 5
17
+ stale-issue-label: 'stale'
18
+ exempt-issue-labels: 'good first issue,help wanted,in progress,on hold,in review,roadmap'
19
+ stale-pr-label: 'stale'
20
+ exempt-pr-labels: 'on hold,in review'
21
+
data/.gitignore CHANGED
@@ -28,3 +28,9 @@ lib/new_relic/build.rb
28
28
  artifacts/
29
29
  test/performance/log/
30
30
  test/performance/script/log/
31
+ infinite_tracing/log/
32
+ infinite_tracing/test/new_relic/infinite_tracing/log
33
+ test/fixtures/cross_agent_tests/*/README.md
34
+ node_modules/
35
+ yarn.lock
36
+ errors.txt
@@ -1,5 +1,249 @@
1
1
  # New Relic Ruby Agent Release Notes #
2
2
 
3
+ ## v6.13.1
4
+
5
+ * **Bugfix: obfuscating URLs to external services no longer modifying original URI**
6
+
7
+ A recent change to the Ruby agent to obfuscate URIs sent to external services had the unintended side-effect of removing query parameters
8
+ from the original URI. This is fixed to obfuscate while also preserving the original URI.
9
+
10
+ Thanks to @VictorJimenezKwast for pinpointing and helpful unit test to demonstrate.
11
+
12
+ ## v6.13.0
13
+
14
+ * **Bugfix: never use redirect host when accessing preconnect endpoint**
15
+
16
+ When connecting to New Relic, the Ruby Agent uses the value in `Agent.config[:host]` to post a request to the New Relic preconnect endpoint. This endpoint returns a "redirect host" which is the URL to which agents send data from that point on.
17
+
18
+ Previously, if the agent needed to reconnect to the collector, it would incorrectly use this redirect host to call the preconnect
19
+ endpoint, when it should have used the original configured value in `Agent.config[:host]`. The agent now uses the correct host
20
+ for all calls to preconnect.
21
+
22
+ * **Bugfix: calling `add_custom_attributes` no longer modifies the params of the caller**
23
+
24
+ The previous agent's improvements to recording attributes at the span level had an unexpected
25
+ side-effect of modifying the params passed to the API call as duplicated attributes were deleted
26
+ in the process. This is now fixed and params passed in are no longer modified.
27
+
28
+ Thanks to Pete Johns (@johnsyweb) for the PR that resolves this bug.
29
+
30
+ * **Bugfix: `http.url` query parameters spans are now obfuscated**
31
+
32
+ Previously, the agent was recording the full URL of the external requests, including
33
+ the query and fragment parts of the URL as part of the attributes on the external request
34
+ span. This has been fixed so that the URL is obfuscated to filter out potentially sensitive data.
35
+
36
+ * **Use system SSL certificates by default**
37
+
38
+ The Ruby agent previously used a root SSL/TLS certificate bundle by default. Now the agent will attempt to use
39
+ the default system certificates, but will fall back to the bundled certs if there is an issue (and log that this occurred).
40
+
41
+ * **Bugfix: reduce allocations for segment attributes**
42
+
43
+ Previously, every segment received an `Attributes` object on initialization. The agent now lazily creates attributes
44
+ on segments, resulting in a significant reduction in object allocations for a typical transaction.
45
+
46
+ * **Bugfix: eliminate errors around Rake::VERSION with Rails**
47
+
48
+ When running a Rails application with rake tasks, customers could see the following error:
49
+
50
+ * **Prevent connecting agent thread from hanging on shutdown**
51
+
52
+ A bug in `Net::HTTP`'s Gzip decoder can cause the (un-catchable)
53
+ thread-kill exception to be replaced with a (catchable) `Zlib` exception,
54
+ which prevents a connecting agent thread from exiting during shutdown,
55
+ causing the Ruby process to hang indefinitely.
56
+ This workaround checks for an `aborting` thread in the `#connect` exception handler
57
+ and re-raises the exception, allowing a killed thread to continue exiting.
58
+
59
+ Thanks to Will Jordan (@wjordan) for chasing this one down and patching with tests.
60
+
61
+ * **Fix error messages about Rake instrumentation**
62
+
63
+ When running a Rails application with rake tasks, customers could see the following error in logs resulting from
64
+ a small part of rake functionality being loaded with the Rails test runner:
65
+
66
+ ```
67
+ ERROR : Error while detecting rake_instrumentation:
68
+ ERROR : NameError: uninitialized constant Rake::VERSION
69
+ ```
70
+
71
+ Such error messages should no longer appear in this context.
72
+
73
+ Thanks to @CamilleDrapier for pointing out this issue.
74
+
75
+ * **Remove NewRelic::Metrics**
76
+
77
+ The `NewRelic::Metrics` module has been removed from the agent since it is no longer used.
78
+
79
+ Thanks to @csaura for the contribution!
80
+
81
+ ## v6.12.0
82
+
83
+ * The New Relic Ruby Agent is now open source under the [Apache 2 license](LICENSE)
84
+ and you can now observe the project roadmap. See our [Contributing guide](https://github.com/newrelic/newrelic-ruby-agent/blob/main/CONTRIBUTING.md)
85
+ and [Code of Conduct](https://github.com/newrelic/.github/blob/master/CODE_OF_CONDUCT.md) for details on contributing!
86
+
87
+ * **Security: Updated all uses of Rake to >= 12.3.3**
88
+
89
+ All versions of Rake testing prior to 12.3.3 were removed to address
90
+ [CVE-2020-8130](https://nvd.nist.gov/vuln/detail/CVE-2020-8130).
91
+ No functionality in the agent was removed nor deprecated with this change, and older versions
92
+ of rake are expected to continue to work as they have in the past. However, versions of
93
+ rake < 12.3.3 are no longer tested nor supported.
94
+
95
+ * **Bugfix: fixes an error capturing content length in middleware on multi-part responses**
96
+
97
+ In the middleware tracing, the `Content-Length` header is sometimes returned as an array of
98
+ values when content is a multi-part response. Previously, the agent would fail with
99
+ "NoMethodError: undefined method `to_i` for Array" Error. This bug is now fixed and
100
+ multi-part content lengths are summed for a total when an `Array` is present.
101
+
102
+ * **Added support for auto-instrumenting Mongo gem versions 2.6 to 2.12**
103
+
104
+ * **Bugfix: MongoDB instrumentation did not handle CommandFailed events when noticing errors**
105
+
106
+ The mongo gem sometimes returns a CommandFailed object instead of a CommandSucceeded object with
107
+ error attributes populated. The instrumentation did not handle noticing errors on CommandFailed
108
+ objects and resulted in logging an error and backtrace to the log file.
109
+
110
+ Additionally, a bug in recording the metric for "findAndModify" as all lowercased "findandmodify"
111
+ for versions 2.1 through 2.5 was fixed.
112
+
113
+ * **Bugfix: Priority Sampler causes crash in high throughput environents in rare cases**
114
+
115
+ Previously, the priority sampling buffer would, in rare cases, generate an error in high-throughput
116
+ environments once capacity is reached and the sampling algorthym engages. This issue is fixed.
117
+
118
+ * **Additional Transaction Information applied to Span Events**
119
+
120
+ When Distributed Tracing and/or Infinite Tracing are enabled, the Agent will now incorporate additional information from the Transaction Event on to the root Span Event of the transaction.
121
+
122
+ The following items are affected:
123
+ * Custom attribute values applied to the Transaction via our [add_custom_attributes](http://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent#add_custom_attributes-instance_method) API method.
124
+ * Request parameters: `request.parameters.*`
125
+ * Request headers: `request.headers.*`
126
+ * Response headers: `response.headers.*`
127
+ * Resque job arguments: `job.resque.args.*`
128
+ * Sidekiq job arguments: `job.sidekiq.args.*`
129
+ * Messaging arguments: `message.*`
130
+ * `httpResponseCode` (deprecated in this version; see note below)/`http.statusCode`
131
+ * `response.status`
132
+ * `request.uri`
133
+ * `request.method`
134
+ * `host.displayName`
135
+
136
+ * **Security Recommendation**
137
+
138
+ Review your Transaction attributes [include](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#transaction_events-attributes-include) and [exclude](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#transaction_events-attributes-exclude) configurations. Any attribute include or exclude settings specific to Transaction Events should be applied
139
+ to your Span attributes [include](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#span-events-attributes-include) and [exclude](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#span-events-attributes-exclude) configuration or your global attributes [include](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#attributes-include) and [exclude](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby#attributes-exclude) configuration.
140
+
141
+ * **Agent attribute deprecation: httpResponseCode**
142
+
143
+ Starting in this agent version, the [agent attribute](https://docs.newrelic.com/docs/agents/ruby-agent/attributes/ruby-agent-attributes#attributes) `httpResponseCode` (string value) has been deprecated. Customers can begin using `http.statusCode`
144
+ (integer value) immediately, and `httpResponseCode` will be removed in the agent's next major version update.
145
+
146
+ * **Bugfix: Eliminate warnings for distributed tracing when using sidekiq**
147
+
148
+ Previously, using sidekiq with distributed tracing disabled resulted in warning messages\
149
+ `WARN : Not configured to accept distributed trace headers`\
150
+ ` WARN : Not configured to insert distributed trace headers`\
151
+ These messages no longer appear.
152
+
153
+ ## v6.11.0
154
+
155
+ * **Infinite Tracing**
156
+
157
+ This release adds support for [Infinite Tracing](https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/enable-configure/enable-distributed-tracing). Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data. With Infinite Tracing, you get examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.
158
+
159
+ Configure your agent to send traces to a trace observer in New Relic Edge. View distributed traces through New Relic’s UI. There is no need to install a collector on your network.
160
+
161
+ Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.
162
+
163
+ * **Bugfix: Cross Application Tracing (CAT) adds a missing field to response**
164
+
165
+ Previously, the Ruby agent's Cross Application Tracing header was missing a reserved field that would lead to an error
166
+ in the Go agent's processing of incoming headers from the Ruby agent. This fix adds that missing field to the headers, eliminating
167
+ the issue with traces involving the Ruby agent and the Go agent.
168
+
169
+ * **Bugfix: Environment Report now supports Rails >= 6.1**
170
+
171
+ Previously, users of Rails 6.1 would see the following deprecation warning appear when the Ruby agent attempted to
172
+ collect enviroment data: `DEPRECATION WARNING: [] is deprecated and will be removed from Rails 6.2`. These deprecation methods
173
+ no longer appear.
174
+
175
+ Thanks to Sébastien Dubois (sedubois) for reporting this issue and for the contribution!
176
+
177
+ * **Added distributed tracing to Sidekiq jobs**
178
+
179
+ Previously, Sidekiq jobs were not included in portions of <a href="https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing">distributed traces</a> captured by the Ruby agent. Now you can view distributed
180
+ traces that include Sidekiq jobs instrumented by the Ruby agent.
181
+
182
+ Thanks to andreaseger for the contribution!
183
+
184
+ * **Bugfix: Eliminate warnings appearing when using `add_method_tracer` with Ruby 2.7**
185
+
186
+ Previously, using `add_method_tracer` with Ruby 2.7 to trace a method that included keyword arguments resulted in warning messages:
187
+ `warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call`. These messages no
188
+ longer appear.
189
+
190
+ Thanks to Harm de Wit and Atsuo Fukaya for reporting the issue!
191
+
192
+ ## v6.10.0
193
+
194
+ * **Error attributes now added to each span that exits with an error or exception**
195
+
196
+ Error attributes `error.class` and `error.message` are now included on the span event in which an error
197
+ or exception was noticed, and, in the case of unhandled exceptions, on any ancestor spans that also exit with an error.
198
+ The public API method `notice_error` now attaches these error attributes to the currently executing span.
199
+
200
+ <a href="https://docs.newrelic.com/docs/apm/distributed-tracing/ui-data/understand-use-distributed-tracing-data#rules-limits">Spans with error details are now highlighted red in the Distributed Tracing UI</a>, and error details will expose the associated
201
+ `error.class` and `error.message`. It is also now possible to see when an exception leaves the boundary of the span,
202
+ and if it is caught in an ancestor span without reaching the entry span. NOTE: This “bubbling up” of exceptions will impact
203
+ the error count when compared to prior behavior for the same trace. It is possible to have a trace that now has span errors
204
+ without the trace level showing an error.
205
+
206
+ If multiple errors occur on the same span, only the most recent error information is added to the attributes. Prior errors on the same span are overwritten.
207
+
208
+ These span event attributes conform to <a href="https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected#ignore">ignored errors</a> and <a href="https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-data/manage-errors-apm-collect-ignore-or-mark-expected#expected">expected errors</a>.
209
+
210
+ * **Added tests for latest Grape / Rack combination**
211
+
212
+ For a short period of time, the latest versions of Grape and Rack had compatibility issues.
213
+ Generally, Rack 2.1.0 should be avoided in all cases due to breaking changes in many gems
214
+ reliant on Rack. We recommend using either Rack <= 2.0.9, or using latest Rack when using Grape
215
+ (2.2.2 at the time of this writing).
216
+
217
+ * **Bugfix: Calculate Content-Length in bytes**
218
+
219
+ Previously, the Content-Length HTTP header would be incorrect after injecting the Browser Monitoring
220
+ JS when the response contained Unicode characters because the value was not calculated in bytes.
221
+ The Content-Length is now correctly updated.
222
+
223
+ Thanks to thaim for the contribution!
224
+
225
+ * **Bugfix: Fix Content-Length calculation when response is nil**
226
+
227
+ Previously, calculating the Content-Length HTTP header would result in a `NoMethodError` in the case of
228
+ a nil response. These errors will no longer occur in such a case.
229
+
230
+ Thanks to Johan Van Ryseghem for the contribution!
231
+
232
+ * **Bugfix: DecoratingFormatter now logs timestamps as millisecond Integers**
233
+
234
+ Previously the agent sent timestamps as a Float with milliseconds as part of the
235
+ fractional value. Logs in Context was changed to only accept Integer values and this
236
+ release changes DecoratingFormatter to match.
237
+
238
+ * **Added --force option to `newrelic install` cli command to allow overwriting newrelic.yml**
239
+
240
+ * **Bugfix: The fully qualified hostname now works correctly for BSD and Solaris**
241
+
242
+ Previously, when running on systems such as BSD and Solaris, the agent was unable to determine the fully
243
+ qualified domain name, which is used to help link Ruby agent data with data from New Relic Infrastructure.
244
+ This information is now successfully collected on various BSD distros and Solaris.
245
+
246
+
3
247
  ## v6.9.0
4
248
 
5
249
  * **Added support for W3C Trace Context, with easy upgrade from New Relic trace context**
@@ -34,7 +278,7 @@
34
278
 
35
279
  Known Issues and Workarounds
36
280
 
37
- * If a .NET agent is initiating traces as the root service, do not upgrade your
281
+ * If a .NET agent is initiating traces as the root service, do not upgrade your
38
282
  downstream Ruby New Relic agents to this agent release.
39
283
 
40
284
  * **Official Ruby 2.7 support**
@@ -43,10 +287,10 @@
43
287
 
44
288
  * **Reduced allocations when tracing transactions using API calls**
45
289
 
46
- Default empty hashes for `options` parameter were not frozen, leading to
290
+ Default empty hashes for `options` parameter were not frozen, leading to
47
291
  excessive and unnecessary allocations when calling APIs for tracing transactions.
48
292
 
49
- Thanks to Joel Turkel (jturkel) for the contribution!
293
+ Thanks to Joel Turkel (jturkel) for the contribution!
50
294
 
51
295
  * **Bugfix for Resque worker thread race conditions**
52
296
 
@@ -56,10 +300,10 @@
56
300
  Thanks to Bertrand Paquet (bpaquet) for the contribution!
57
301
 
58
302
  * **Bugfix for Content-Length when injecting Browser Monitoring JS**
59
-
303
+
60
304
  The Content-Length HTTP header would be incorrect after injecting the Browser Monitoring
61
305
  JS into the HEAD tag of the HTML source with Content-Length and lead to the HTML BODY content
62
- being truncated in some cases. The Content-Length is now correctly updated after injecting the
306
+ being truncated in some cases. The Content-Length is now correctly updated after injecting the
63
307
  Browser Monitoring JS script.
64
308
 
65
309
  Thanks to Slava Kardakov (ojab) for the contribution!
@@ -77,7 +321,7 @@
77
321
  level custom attributes, more granular tagging of events is possible for
78
322
  easier isolation and review of trace events. For more information:
79
323
 
80
- * [`Agent#add_custom_span_attributes`](https://www.rubydoc.info/github/newrelic/rpm/NewRelic/Agent#add_custom_span_attributes)
324
+ * [`Agent#add_custom_span_attributes`](https://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent#add_custom_span_attributes)
81
325
 
82
326
  * **Enables ability to migrate to Configurable Security Policies (CSP) on a per agent
83
327
  basis for accounts already using High Security Mode (HSM).**
@@ -145,10 +389,10 @@
145
389
  * **Trace and Entity Metadata API**
146
390
 
147
391
  Several new API methods have been added to the agent:
148
- * [`Agent#linking_metadata`](https://www.rubydoc.info/github/newrelic/rpm/NewRelic/Agent#linking_metadata-instance_method)
149
- * [`Tracer#trace_id`](https://www.rubydoc.info/github/newrelic/rpm/NewRelic/Agent/Tracer#trace_id-class_method)
150
- * [`Tracer#span_id`](https://www.rubydoc.info/github/newrelic/rpm/NewRelic/Agent/Tracer#span_id-class_method)
151
- * [`Tracer#sampled?`](https://www.rubydoc.info/github/newrelic/rpm/NewRelic/Agent/Tracer#sampled?-class_method)
392
+ * [`Agent#linking_metadata`](https://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent#linking_metadata-instance_method)
393
+ * [`Tracer#trace_id`](https://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent/Tracer#trace_id-class_method)
394
+ * [`Tracer#span_id`](https://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent/Tracer#span_id-class_method)
395
+ * [`Tracer#sampled?`](https://www.rubydoc.info/github/newrelic/newrelic-ruby-agent/NewRelic/Agent/Tracer#sampled?-class_method)
152
396
 
153
397
  These API methods allow you to access information that can be used to link data of your choosing to a trace or entity.
154
398
 
@@ -1,13 +1,13 @@
1
1
  # Guidelines for Contributing Code
2
2
 
3
- At New Relic we welcome community code contributions to the Ruby agent, and have
4
- taken effort to make this process easy for both contributors and our development
5
- team.
3
+ New Relic welcomes code contributions by the Ruby community, and
4
+ have taken effort to make this process easy for both contributors and our
5
+ development team.
6
6
 
7
7
  When contributing, keep in mind that the agent runs in a wide variety of Ruby
8
8
  language implementations (e.g. 2.x.x, jruby, etc.) as well as a wide variety of
9
- application environments (e.g. Rails, Sinatra, roll-your-own, etc.) See
10
- https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/ruby-agent-requirements-supported-frameworks
9
+ application environments (e.g. Rails, Sinatra, roll-your-own, etc.) See [Ruby agent requirements and supported frameworks]
10
+ (https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/ruby-agent-requirements-supported-frameworks)
11
11
  for the current full list.
12
12
 
13
13
  Because of this, we need to be more defensive in our coding practices than most
@@ -15,10 +15,72 @@ projects. Syntax must be compatible with all supported Ruby implementations and
15
15
  we can't assume the presence of any specific libraries, including `ActiveSupport`,
16
16
  `ActiveRecord`, etc.
17
17
 
18
+ ## Process
19
+
20
+ ### Version Support
21
+
22
+ When contributing, keep in mind that New Relic customers (that's you!) are
23
+ running many different versions of Ruby, some of them pretty old. Changes that
24
+ depend on the newest version of Ruby will probably be rejected, especially if
25
+ they replace something backwards compatible.
26
+
27
+ Be aware that the instrumentation needs to work with a wide range of versions of
28
+ the instrumented modules, and that code that looks nonsensical or
29
+ overcomplicated may be that way for compatibility-related reasons. Read all the
30
+ comments and check the related tests before deciding whether existing code is
31
+ incorrect.
32
+
33
+ If you are planning on contributing a new feature or an otherwise complex
34
+ contribution, we kindly ask you to start a conversation with the maintainer team
35
+ by opening up an Github issue first.
36
+
37
+
38
+ ### General Guidelines
39
+ The Ruby agent avoids requiring any dependencies in the main agent code base.
40
+ Instrumentations and features that would otherwise require a dependency (such as
41
+ Infinite Tracing, which require gRPC and protobuf) are built as separate gems.
42
+ If you have a feature or instrumentation request that would require a
43
+ dependency, please open an Issue to discuss with the maintainers before
44
+ proceeding.
45
+
46
+ Your code will be evaluated for completeness and accuracy in
47
+ implementation and must be accompanied with appropriate unit tests. New
48
+ additions that do not break existing tests are the easiest and quickest to be
49
+ accepted and merged. New features and improvements that break existing
50
+ functionality are slower to be accepted and merged as they require agreement
51
+ with maintainers across a majority of the languages New Relic supports. Any
52
+ such breaking changes will require a major version bump whereas non-breaking
53
+ additions only lead to minor version bumps.
54
+
55
+ Please be aware that the maintainers of New Relic’s agents aim to have as much
56
+ commonality of functionality across all language agents as makes sense, so we are
57
+ always working to reconcile language-specific changes against the cross-language
58
+ community set of agreements.
59
+
60
+ ### Feature Requests
61
+
62
+ Feature requests should be submitted in the [Issue tracker](../../issues), with
63
+ a description of the expected behavior & use case. Before submitting an Issue,
64
+ please search for similar ones in the [closed
65
+ issues](../../issues?q=is%3Aissue+is%3Aclosed).
66
+
67
+ ### Pull Requests
68
+
69
+ We can only accept PRs for version v6.12.0 or greater due to open source
70
+ licensing restrictions.
71
+
72
+ ### Code of Conduct
73
+
74
+ Before contributing please read the [code of conduct](https://github.com/newrelic/.github/blob/master/CODE_OF_CONDUCT.md)
75
+
76
+ Note that our [code of conduct](https://github.com/newrelic/.github/blob/master/CODE_OF_CONDUCT.md) applies to all platforms
77
+ and venues related to this project; please follow it in all your interactions
78
+ with the project and its participants.
79
+
18
80
  ## Branches
19
81
 
20
- The head of master will generally have New Relic's latest release. However,
21
- New Relic reserves the ability to push an edge to the master. If you download a
82
+ The head of `main` will generally have New Relic's latest release. However,
83
+ New Relic reserves the ability to push an edge to the `main`. If you download a
22
84
  release from this repo, use the appropriate tag. New Relic usually pushes beta
23
85
  versions of a release to a working branch before tagging them for General
24
86
  Availability.
@@ -39,13 +101,16 @@ Running the test suite is simple. Just invoke:
39
101
  bundle
40
102
  bundle exec rake
41
103
 
42
- This will run the unit tests in standalone mode, bootstrapping a basic Rails
43
- 3.2 environment for the agent to instrument, then executing the test suite.
104
+ This will run the unit tests in standalone mode. You can run against a specific Rails version
105
+ by passing the version name (which should match the name of a subdirectory in test/environments)
106
+ as an argument to the test:env rake task, like this:
107
+
108
+ bundle exec rake test:env[rails60]
44
109
 
45
110
  These tests are setup to run automatically in
46
- [Travis CI](https://travis-ci.org/newrelic/rpm) under several Ruby implementations.
47
- When you've pushed your changes to GitHub, you can confirm that the Travis
48
- build passes for your fork.
111
+ [GitHub Actions](https://github.com/newrelic/newrelic-ruby-agent/actions) under several
112
+ Ruby implementations. When you've pushed your changes to GitHub, you can confirm that
113
+ the GitHub Actions test matrix passes for your fork.
49
114
 
50
115
  Additionally, our own CI jobs runs these tests under multiple versions of Rails
51
116
  to verify compatibility.
@@ -74,15 +139,37 @@ These tests can be run by invoking:
74
139
  bundle exec rake test:multiverse
75
140
 
76
141
  More details are available in
77
- [test/multiverse/README.md](https://github.com/newrelic/rpm/blob/master/test/multiverse/README.md).
142
+ [test/multiverse/README.md](https://github.com/newrelic/newrelic-ruby-agent/blob/main/test/multiverse/README.md).
143
+
144
+ ## Contributor License Agreement
145
+
146
+ Keep in mind that when you submit your Pull Request, you'll need to sign the CLA
147
+ via the click-through using CLA-Assistant. If you'd like to execute our
148
+ corporate CLA, or if you have any questions, please drop us an email at
149
+ opensource@newrelic.com.
150
+
151
+ For more information about CLAs, please check out Alex Russell’s excellent post,
152
+ [“Why Do I Need to Sign This?”](https://infrequently.org/2008/06/why-do-i-need-to-sign-this/).
153
+
154
+ ## Slack
155
+
156
+ We host a public Slack with a dedicated channel for contributors and maintainers
157
+ of open source projects hosted by New Relic. If you are contributing to this
158
+ project, you're welcome to request access to the #oss-contributors channel in
159
+ the newrelicusers.slack.com workspace. To request access, see
160
+ https://newrelicusers-signup.herokuapp.com/.
161
+
162
+ ## Explorer's Hub
163
+
164
+ New Relic hosts and moderates an online forum where customers can interact with
165
+ New Relic employees as well as other customers to get help and share best
166
+ practices. Like all official New Relic open source projects, there's a related
167
+ Community topic in the New Relic Explorers Hub. You can find this project's
168
+ topic/threads here:
78
169
 
79
- ### And Finally...
170
+ [Explorer's Hub](https://discuss.newrelic.com/tags/rubyagent)
80
171
 
81
- You are welcome to send pull requests to us - however, by doing so you agree
82
- that you are granting New Relic a non-exclusive, non-revokable, no-cost license
83
- to use the code, algorithms, patents, and ideas in that code in our products if
84
- we so choose. Fortunately, you also agree the code is provided as-is and you provide no
85
- warranties as to its fitness or correctness for any purpose.
172
+ ## And Finally...
86
173
 
87
174
  If you have any feedback on how we can make contributing easier, please get in
88
175
  touch at [support.newrelic.com](http://support.newrelic.com) and let us know!