newrelic_rpm 6.15.0 → 9.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (485) hide show
  1. checksums.yaml +4 -4
  2. data/.build_ignore +26 -0
  3. data/CHANGELOG.md +4176 -2789
  4. data/CONTRIBUTING.md +32 -13
  5. data/Gemfile +1 -2
  6. data/LICENSE +0 -6
  7. data/README.md +29 -22
  8. data/Rakefile +33 -35
  9. data/THIRD_PARTY_NOTICES.md +14 -199
  10. data/Thorfile +5 -0
  11. data/bin/newrelic +4 -9
  12. data/bin/newrelic_rpm +15 -0
  13. data/bin/nrdebug +85 -62
  14. data/init.rb +6 -8
  15. data/install.rb +2 -2
  16. data/lib/new_relic/agent/adaptive_sampler.rb +13 -9
  17. data/lib/new_relic/agent/agent.rb +99 -941
  18. data/lib/new_relic/agent/agent_helpers/connect.rb +222 -0
  19. data/lib/new_relic/agent/agent_helpers/harvest.rb +153 -0
  20. data/lib/new_relic/agent/agent_helpers/shutdown.rb +72 -0
  21. data/lib/new_relic/agent/agent_helpers/special_startup.rb +74 -0
  22. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +175 -0
  23. data/lib/new_relic/agent/agent_helpers/startup.rb +202 -0
  24. data/lib/new_relic/agent/agent_helpers/transmit.rb +76 -0
  25. data/lib/new_relic/agent/agent_logger.rb +27 -23
  26. data/lib/new_relic/agent/attribute_filter.rb +67 -50
  27. data/lib/new_relic/agent/attribute_pre_filtering.rb +109 -0
  28. data/lib/new_relic/agent/attribute_processing.rb +9 -9
  29. data/lib/new_relic/agent/attributes.rb +5 -4
  30. data/lib/new_relic/agent/audit_logger.rb +13 -8
  31. data/lib/new_relic/agent/autostart.rb +21 -20
  32. data/lib/new_relic/agent/chained_call.rb +1 -1
  33. data/lib/new_relic/agent/commands/agent_command.rb +4 -4
  34. data/lib/new_relic/agent/commands/agent_command_router.rb +15 -13
  35. data/lib/new_relic/agent/commands/thread_profiler_session.rb +16 -14
  36. data/lib/new_relic/agent/configuration/default_source.rb +1608 -1182
  37. data/lib/new_relic/agent/configuration/dotted_hash.rb +6 -5
  38. data/lib/new_relic/agent/configuration/environment_source.rb +13 -11
  39. data/lib/new_relic/agent/configuration/event_harvest_config.rb +40 -17
  40. data/lib/new_relic/agent/configuration/high_security_source.rb +11 -12
  41. data/lib/new_relic/agent/configuration/manager.rb +103 -75
  42. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  43. data/lib/new_relic/agent/configuration/mask_defaults.rb +3 -3
  44. data/lib/new_relic/agent/configuration/security_policy_source.rb +92 -95
  45. data/lib/new_relic/agent/configuration/server_source.rb +43 -41
  46. data/lib/new_relic/agent/configuration/yaml_source.rb +47 -10
  47. data/lib/new_relic/agent/configuration.rb +1 -1
  48. data/lib/new_relic/agent/connect/request_builder.rb +18 -18
  49. data/lib/new_relic/agent/connect/response_handler.rb +5 -8
  50. data/lib/new_relic/agent/custom_event_aggregator.rb +42 -16
  51. data/lib/new_relic/agent/database/explain_plan_helpers.rb +5 -6
  52. data/lib/new_relic/agent/database/obfuscation_helpers.rb +16 -15
  53. data/lib/new_relic/agent/database/obfuscator.rb +4 -4
  54. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +3 -3
  55. data/lib/new_relic/agent/database.rb +45 -53
  56. data/lib/new_relic/agent/database_adapter.rb +3 -1
  57. data/lib/new_relic/agent/datastores/metric_helper.rb +21 -22
  58. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +7 -6
  59. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +17 -21
  60. data/lib/new_relic/agent/datastores/mongo.rb +6 -11
  61. data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
  62. data/lib/new_relic/agent/datastores/redis.rb +9 -15
  63. data/lib/new_relic/agent/datastores.rb +13 -15
  64. data/lib/new_relic/agent/deprecator.rb +1 -1
  65. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +10 -10
  66. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +45 -40
  67. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +22 -22
  68. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +23 -23
  69. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +52 -54
  70. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +10 -11
  71. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +82 -83
  72. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +42 -41
  73. data/lib/new_relic/agent/distributed_tracing.rb +33 -101
  74. data/lib/new_relic/agent/encoding_normalizer.rb +4 -2
  75. data/lib/new_relic/agent/error_collector.rb +105 -58
  76. data/lib/new_relic/agent/error_event_aggregator.rb +4 -5
  77. data/lib/new_relic/agent/error_filter.rb +174 -0
  78. data/lib/new_relic/agent/error_trace_aggregator.rb +9 -7
  79. data/lib/new_relic/agent/event_aggregator.rb +22 -21
  80. data/lib/new_relic/agent/event_buffer.rb +7 -8
  81. data/lib/new_relic/agent/event_listener.rb +1 -2
  82. data/lib/new_relic/agent/event_loop.rb +27 -25
  83. data/lib/new_relic/agent/external.rb +11 -44
  84. data/lib/new_relic/agent/guid_generator.rb +13 -11
  85. data/lib/new_relic/agent/harvester.rb +5 -8
  86. data/lib/new_relic/agent/heap.rb +8 -9
  87. data/lib/new_relic/agent/hostname.rb +21 -14
  88. data/lib/new_relic/agent/http_clients/abstract.rb +22 -31
  89. data/lib/new_relic/agent/http_clients/async_http_wrappers.rb +80 -0
  90. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +14 -17
  91. data/lib/new_relic/agent/http_clients/ethon_wrappers.rb +109 -0
  92. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +15 -17
  93. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +7 -6
  94. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +8 -9
  95. data/lib/new_relic/agent/http_clients/httpx_wrappers.rb +91 -0
  96. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +13 -8
  97. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +12 -13
  98. data/lib/new_relic/agent/http_clients/uri_util.rb +3 -5
  99. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +9 -22
  100. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +42 -0
  101. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +41 -33
  102. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +31 -0
  103. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +64 -0
  104. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +30 -0
  105. data/lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb +33 -0
  106. data/lib/new_relic/agent/instrumentation/action_mailer.rb +30 -0
  107. data/lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb +85 -0
  108. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +20 -21
  109. data/lib/new_relic/agent/instrumentation/active_job.rb +33 -13
  110. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
  111. data/lib/new_relic/agent/instrumentation/active_merchant.rb +20 -6
  112. data/lib/new_relic/agent/instrumentation/active_record.rb +41 -38
  113. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +87 -75
  114. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +54 -66
  115. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +6 -6
  116. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +30 -22
  117. data/lib/new_relic/agent/instrumentation/active_storage.rb +7 -3
  118. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +8 -33
  119. data/lib/new_relic/agent/instrumentation/active_support.rb +27 -0
  120. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/chain.rb +69 -0
  121. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +13 -0
  122. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/prepend.rb +37 -0
  123. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +23 -0
  124. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  125. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +24 -0
  126. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  127. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +26 -0
  128. data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
  129. data/lib/new_relic/agent/instrumentation/async_http/chain.rb +23 -0
  130. data/lib/new_relic/agent/instrumentation/async_http/instrumentation.rb +37 -0
  131. data/lib/new_relic/agent/instrumentation/async_http/prepend.rb +15 -0
  132. data/lib/new_relic/agent/instrumentation/async_http.rb +28 -0
  133. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  134. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +159 -0
  135. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  136. data/lib/new_relic/agent/instrumentation/bunny.rb +11 -154
  137. data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +36 -0
  138. data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +20 -0
  139. data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +27 -0
  140. data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +31 -0
  141. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +74 -63
  142. data/lib/new_relic/agent/instrumentation/curb/chain.rb +91 -0
  143. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +225 -0
  144. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +61 -0
  145. data/lib/new_relic/agent/instrumentation/curb.rb +14 -246
  146. data/lib/new_relic/agent/instrumentation/custom_events.rb +12 -0
  147. data/lib/new_relic/agent/instrumentation/custom_events_subscriber.rb +38 -0
  148. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +36 -0
  149. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +51 -0
  150. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +33 -0
  151. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +30 -53
  152. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
  153. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +70 -0
  154. data/lib/new_relic/agent/instrumentation/elasticsearch/prepend.rb +13 -0
  155. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +31 -0
  156. data/lib/new_relic/agent/instrumentation/ethon/chain.rb +39 -0
  157. data/lib/new_relic/agent/instrumentation/ethon/instrumentation.rb +105 -0
  158. data/lib/new_relic/agent/instrumentation/ethon/prepend.rb +35 -0
  159. data/lib/new_relic/agent/instrumentation/ethon.rb +39 -0
  160. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +11 -7
  161. data/lib/new_relic/agent/instrumentation/excon.rb +27 -29
  162. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +27 -0
  163. data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +20 -0
  164. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +25 -0
  165. data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
  166. data/lib/new_relic/agent/instrumentation/grape/chain.rb +24 -0
  167. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +104 -0
  168. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  169. data/lib/new_relic/agent/instrumentation/grape.rb +16 -117
  170. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
  171. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +94 -0
  172. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
  173. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
  174. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
  175. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
  176. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +138 -0
  177. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
  178. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
  179. data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
  180. data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
  181. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +24 -0
  182. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +41 -0
  183. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +15 -0
  184. data/lib/new_relic/agent/instrumentation/httpclient.rb +10 -32
  185. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  186. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +34 -0
  187. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  188. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  189. data/lib/new_relic/agent/instrumentation/httpx/chain.rb +20 -0
  190. data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +51 -0
  191. data/lib/new_relic/agent/instrumentation/httpx/prepend.rb +15 -0
  192. data/lib/new_relic/agent/instrumentation/httpx.rb +27 -0
  193. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +5 -6
  194. data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
  195. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +69 -0
  196. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  197. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  198. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +15 -0
  199. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +59 -128
  200. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +59 -0
  201. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +99 -0
  202. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +103 -0
  203. data/lib/new_relic/agent/instrumentation/memcache.rb +58 -74
  204. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +15 -14
  205. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +6 -8
  206. data/lib/new_relic/agent/instrumentation/mongo.rb +6 -137
  207. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +24 -23
  208. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +24 -0
  209. data/lib/new_relic/agent/instrumentation/{net_prepend.rb → net_http/instrumentation.rb} +18 -14
  210. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  211. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  212. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +56 -10
  213. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +38 -0
  214. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +32 -0
  215. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  216. data/lib/new_relic/agent/instrumentation/padrino.rb +20 -58
  217. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +6 -6
  218. data/lib/new_relic/agent/instrumentation/queue_time.rb +9 -10
  219. data/lib/new_relic/agent/instrumentation/rack/chain.rb +66 -0
  220. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +33 -0
  221. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +81 -0
  222. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +43 -0
  223. data/lib/new_relic/agent/instrumentation/rack.rb +32 -142
  224. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +25 -56
  225. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +4 -4
  226. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +9 -8
  227. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +18 -5
  228. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +8 -5
  229. data/lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb +30 -0
  230. data/lib/new_relic/agent/instrumentation/rake/chain.rb +20 -0
  231. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +146 -0
  232. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  233. data/lib/new_relic/agent/instrumentation/rake.rb +17 -158
  234. data/lib/new_relic/agent/instrumentation/redis/chain.rb +45 -0
  235. data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
  236. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +98 -0
  237. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
  238. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +29 -0
  239. data/lib/new_relic/agent/instrumentation/redis.rb +19 -108
  240. data/lib/new_relic/agent/instrumentation/resque/chain.rb +21 -0
  241. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  242. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +38 -0
  243. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +15 -0
  244. data/lib/new_relic/agent/instrumentation/resque.rb +32 -43
  245. data/lib/new_relic/agent/instrumentation/roda/chain.rb +43 -0
  246. data/lib/new_relic/agent/instrumentation/roda/ignorer.rb +45 -0
  247. data/lib/new_relic/agent/instrumentation/roda/instrumentation.rb +68 -0
  248. data/lib/new_relic/agent/instrumentation/roda/prepend.rb +24 -0
  249. data/lib/new_relic/agent/instrumentation/roda/roda_transaction_namer.rb +29 -0
  250. data/lib/new_relic/agent/instrumentation/roda.rb +36 -0
  251. data/lib/new_relic/agent/instrumentation/sequel.rb +16 -19
  252. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +12 -12
  253. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +24 -0
  254. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
  255. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +60 -0
  256. data/lib/new_relic/agent/instrumentation/sidekiq.rb +27 -65
  257. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  258. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +30 -36
  259. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +130 -0
  260. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  261. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +4 -6
  262. data/lib/new_relic/agent/instrumentation/sinatra.rb +34 -163
  263. data/lib/new_relic/agent/instrumentation/stripe.rb +28 -0
  264. data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +77 -0
  265. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  266. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +24 -0
  267. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  268. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  269. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
  270. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +46 -0
  271. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  272. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  273. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  274. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +84 -0
  275. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  276. data/lib/new_relic/agent/instrumentation/typhoeus.rb +12 -91
  277. data/lib/new_relic/agent/instrumentation/view_component/chain.rb +21 -0
  278. data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +39 -0
  279. data/lib/new_relic/agent/instrumentation/view_component/prepend.rb +13 -0
  280. data/lib/new_relic/agent/instrumentation/view_component.rb +26 -0
  281. data/lib/new_relic/agent/instrumentation.rb +1 -1
  282. data/lib/new_relic/agent/internal_agent_error.rb +2 -2
  283. data/lib/new_relic/agent/javascript_instrumentor.rb +58 -48
  284. data/lib/new_relic/agent/linking_metadata.rb +44 -0
  285. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  286. data/lib/new_relic/agent/log_event_aggregator.rb +282 -0
  287. data/lib/new_relic/agent/log_event_attributes.rb +115 -0
  288. data/lib/new_relic/agent/log_once.rb +1 -1
  289. data/lib/new_relic/agent/log_priority.rb +20 -0
  290. data/lib/new_relic/agent/logging.rb +95 -52
  291. data/lib/new_relic/agent/memory_logger.rb +2 -2
  292. data/lib/new_relic/agent/messaging.rb +72 -86
  293. data/lib/new_relic/agent/method_tracer.rb +159 -154
  294. data/lib/new_relic/agent/method_tracer_helpers.rb +109 -11
  295. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +26 -19
  296. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +5 -4
  297. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -2
  298. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +17 -9
  299. data/lib/new_relic/agent/monitors.rb +6 -7
  300. data/lib/new_relic/agent/new_relic_service/encoders.rb +9 -9
  301. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +6 -6
  302. data/lib/new_relic/agent/new_relic_service/marshaller.rb +2 -2
  303. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +4 -4
  304. data/lib/new_relic/agent/new_relic_service.rb +282 -213
  305. data/lib/new_relic/agent/{noticible_error.rb → noticeable_error.rb} +2 -5
  306. data/lib/new_relic/agent/null_logger.rb +7 -3
  307. data/lib/new_relic/agent/obfuscator.rb +7 -11
  308. data/lib/new_relic/agent/parameter_filtering.rb +29 -15
  309. data/lib/new_relic/agent/payload_metric_mapping.rb +9 -10
  310. data/lib/new_relic/agent/pipe_channel_manager.rb +34 -23
  311. data/lib/new_relic/agent/pipe_service.rb +13 -8
  312. data/lib/new_relic/agent/prepend_supportability.rb +2 -2
  313. data/lib/new_relic/agent/priority_sampled_buffer.rb +9 -12
  314. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +11 -11
  315. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +12 -14
  316. data/lib/new_relic/agent/rules_engine.rb +6 -5
  317. data/lib/new_relic/agent/sampler.rb +5 -5
  318. data/lib/new_relic/agent/sampler_collection.rb +4 -5
  319. data/lib/new_relic/agent/samplers/cpu_sampler.rb +8 -7
  320. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +20 -17
  321. data/lib/new_relic/agent/samplers/memory_sampler.rb +32 -21
  322. data/lib/new_relic/agent/samplers/object_sampler.rb +2 -2
  323. data/lib/new_relic/agent/samplers/vm_sampler.rb +21 -19
  324. data/lib/new_relic/agent/span_event_aggregator.rb +15 -15
  325. data/lib/new_relic/agent/span_event_primitive.rb +77 -59
  326. data/lib/new_relic/agent/sql_sampler.rb +20 -21
  327. data/lib/new_relic/agent/stats.rb +79 -42
  328. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +9 -11
  329. data/lib/new_relic/agent/stats_engine/stats_hash.rb +12 -13
  330. data/lib/new_relic/agent/stats_engine.rb +8 -8
  331. data/lib/new_relic/agent/synthetics_event_aggregator.rb +8 -9
  332. data/lib/new_relic/agent/system_info.rb +113 -67
  333. data/lib/new_relic/agent/threading/agent_thread.rb +18 -14
  334. data/lib/new_relic/agent/threading/backtrace_node.rb +12 -13
  335. data/lib/new_relic/agent/threading/backtrace_service.rb +17 -21
  336. data/lib/new_relic/agent/threading/thread_profile.rb +24 -24
  337. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +2 -2
  338. data/lib/new_relic/agent/tracer.rb +101 -96
  339. data/lib/new_relic/agent/transaction/abstract_segment.rb +176 -52
  340. data/lib/new_relic/agent/transaction/datastore_segment.rb +22 -18
  341. data/lib/new_relic/agent/transaction/distributed_tracer.rb +65 -57
  342. data/lib/new_relic/agent/transaction/distributed_tracing.rb +46 -48
  343. data/lib/new_relic/agent/transaction/external_request_segment.rb +52 -39
  344. data/lib/new_relic/agent/transaction/message_broker_segment.rb +31 -37
  345. data/lib/new_relic/agent/transaction/request_attributes.rb +78 -42
  346. data/lib/new_relic/agent/transaction/segment.rb +20 -10
  347. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -3
  348. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +2 -2
  349. data/lib/new_relic/agent/transaction/trace.rb +16 -12
  350. data/lib/new_relic/agent/transaction/trace_builder.rb +10 -10
  351. data/lib/new_relic/agent/transaction/trace_context.rb +35 -35
  352. data/lib/new_relic/agent/transaction/trace_node.rb +30 -28
  353. data/lib/new_relic/agent/transaction/tracing.rb +32 -13
  354. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +6 -6
  355. data/lib/new_relic/agent/transaction.rb +229 -178
  356. data/lib/new_relic/agent/transaction_error_primitive.rb +43 -25
  357. data/lib/new_relic/agent/transaction_event_aggregator.rb +16 -16
  358. data/lib/new_relic/agent/transaction_event_primitive.rb +51 -33
  359. data/lib/new_relic/agent/transaction_event_recorder.rb +16 -15
  360. data/lib/new_relic/agent/transaction_metrics.rb +10 -9
  361. data/lib/new_relic/agent/transaction_sampler.rb +7 -8
  362. data/lib/new_relic/agent/transaction_time_aggregator.rb +32 -27
  363. data/lib/new_relic/agent/utilization/aws.rb +34 -4
  364. data/lib/new_relic/agent/utilization/azure.rb +6 -6
  365. data/lib/new_relic/agent/utilization/gcp.rb +11 -13
  366. data/lib/new_relic/agent/utilization/pcf.rb +6 -5
  367. data/lib/new_relic/agent/utilization/vendor.rb +45 -32
  368. data/lib/new_relic/agent/utilization_data.rb +7 -5
  369. data/lib/new_relic/agent/vm/c_ruby_vm.rb +99 -0
  370. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  371. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +3 -3
  372. data/lib/new_relic/agent/vm/snapshot.rb +5 -5
  373. data/lib/new_relic/agent/vm.rb +3 -3
  374. data/lib/new_relic/agent/worker_loop.rb +10 -12
  375. data/lib/new_relic/agent.rb +204 -111
  376. data/lib/new_relic/base64.rb +25 -0
  377. data/lib/new_relic/cli/command.rb +26 -25
  378. data/lib/new_relic/cli/commands/deployments.rb +100 -49
  379. data/lib/new_relic/cli/commands/install.rb +31 -34
  380. data/lib/new_relic/coerce.rb +15 -13
  381. data/lib/new_relic/collection_helper.rb +50 -48
  382. data/lib/new_relic/constants.rb +13 -12
  383. data/lib/new_relic/control/class_methods.rb +6 -12
  384. data/lib/new_relic/control/frameworks/external.rb +2 -2
  385. data/lib/new_relic/control/frameworks/rails.rb +60 -30
  386. data/lib/new_relic/control/frameworks/rails3.rb +3 -4
  387. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  388. data/lib/new_relic/control/frameworks/rails_notifications.rb +1 -1
  389. data/lib/new_relic/control/frameworks/roda.rb +20 -0
  390. data/lib/new_relic/control/frameworks/ruby.rb +3 -3
  391. data/lib/new_relic/control/frameworks/sinatra.rb +7 -1
  392. data/lib/new_relic/control/frameworks.rb +1 -1
  393. data/lib/new_relic/control/instance_methods.rb +27 -45
  394. data/lib/new_relic/control/instrumentation.rb +25 -11
  395. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  396. data/lib/new_relic/control/server_methods.rb +3 -4
  397. data/lib/new_relic/control.rb +1 -2
  398. data/lib/new_relic/delayed_job_injection.rb +1 -1
  399. data/lib/new_relic/dependency_detection.rb +141 -32
  400. data/lib/new_relic/environment_report.rb +41 -33
  401. data/lib/new_relic/helper.rb +49 -7
  402. data/lib/new_relic/language_support.rb +39 -6
  403. data/lib/new_relic/latest_changes.rb +10 -9
  404. data/lib/new_relic/local_environment.rb +42 -37
  405. data/lib/new_relic/metric_data.rb +31 -26
  406. data/lib/new_relic/metric_spec.rb +8 -6
  407. data/lib/new_relic/noticed_error.rb +43 -46
  408. data/lib/new_relic/rack/agent_hooks.rb +2 -2
  409. data/lib/new_relic/rack/agent_middleware.rb +3 -17
  410. data/lib/new_relic/rack/browser_monitoring.rb +135 -121
  411. data/lib/new_relic/rack.rb +1 -1
  412. data/lib/new_relic/recipes/capistrano3.rb +4 -62
  413. data/lib/new_relic/recipes/capistrano_legacy.rb +24 -27
  414. data/lib/new_relic/recipes/helpers/send_deployment.rb +70 -0
  415. data/lib/new_relic/recipes.rb +1 -1
  416. data/lib/new_relic/supportability_helper.rb +14 -12
  417. data/lib/new_relic/traced_thread.rb +38 -0
  418. data/lib/new_relic/version.rb +6 -17
  419. data/lib/newrelic_rpm.rb +20 -33
  420. data/lib/sequel/extensions/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +18 -21
  421. data/lib/sequel/plugins/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +9 -15
  422. data/lib/tasks/all.rb +3 -3
  423. data/lib/tasks/bump_version.rake +21 -0
  424. data/lib/tasks/config.rake +25 -119
  425. data/lib/tasks/coverage_report.rake +28 -0
  426. data/lib/tasks/helpers/config.html.erb +114 -0
  427. data/lib/tasks/helpers/format.rb +127 -0
  428. data/lib/tasks/helpers/matches.rb +12 -0
  429. data/lib/tasks/helpers/newrelicyml.rb +144 -0
  430. data/lib/tasks/helpers/prompt.rb +24 -0
  431. data/lib/tasks/helpers/version_bump.rb +62 -0
  432. data/lib/tasks/install.rake +8 -4
  433. data/lib/tasks/instrumentation_generator/README.md +63 -0
  434. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  435. data/lib/tasks/instrumentation_generator/instrumentation.thor +121 -0
  436. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  437. data/lib/tasks/instrumentation_generator/templates/chain.tt +21 -0
  438. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +7 -0
  439. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  440. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  441. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  442. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  443. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  444. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  445. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  446. data/lib/tasks/newrelic.rb +2 -1
  447. data/lib/tasks/newrelicyml.rake +13 -0
  448. data/lib/tasks/tests.rake +83 -17
  449. data/newrelic.yml +790 -4
  450. data/newrelic_rpm.gemspec +52 -43
  451. data/recipes/newrelic.rb +2 -2
  452. data/test/agent_helper.rb +252 -198
  453. metadata +275 -95
  454. data/.gitignore +0 -37
  455. data/.project +0 -23
  456. data/.yardopts +0 -26
  457. data/Guardfile +0 -25
  458. data/ROADMAP.md +0 -24
  459. data/bin/mongrel_rpm +0 -33
  460. data/bin/newrelic_cmd +0 -5
  461. data/cert/cacert.pem +0 -1177
  462. data/config/database.yml +0 -5
  463. data/config.dot +0 -278
  464. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
  465. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  466. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -75
  467. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
  468. data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -204
  469. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -49
  470. data/lib/new_relic/agent/instrumentation/http.rb +0 -49
  471. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  472. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  473. data/lib/new_relic/agent/instrumentation/net.rb +0 -70
  474. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
  475. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  476. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
  477. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
  478. data/lib/new_relic/agent/range_extensions.rb +0 -47
  479. data/lib/new_relic/agent/supported_versions.rb +0 -275
  480. data/lib/new_relic/agent/vm/mri_vm.rb +0 -81
  481. data/lib/new_relic/control/frameworks/merb.rb +0 -29
  482. data/lib/tasks/config.html.erb +0 -32
  483. data/lib/tasks/multiverse.rake +0 -2
  484. data/lib/tasks/multiverse.rb +0 -104
  485. /data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
data/CONTRIBUTING.md CHANGED
@@ -6,8 +6,7 @@ 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 [Ruby agent requirements and supported frameworks]
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](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/ruby-agent-requirements-supported-frameworks)
11
10
  for the current full list.
12
11
 
13
12
  Because of this, we need to be more defensive in our coding practices than most
@@ -32,7 +31,7 @@ incorrect.
32
31
 
33
32
  If you are planning on contributing a new feature or an otherwise complex
34
33
  contribution, we kindly ask you to start a conversation with the maintainer team
35
- by opening up an Github issue first.
34
+ by opening up a GitHub issue first.
36
35
 
37
36
 
38
37
  ### General Guidelines
@@ -67,7 +66,8 @@ issues](../../issues?q=is%3Aissue+is%3Aclosed).
67
66
  ### Pull Requests
68
67
 
69
68
  We can only accept PRs for version v6.12.0 or greater due to open source
70
- licensing restrictions.
69
+ licensing restrictions. Please set the merge branch to `dev` unless the issue
70
+ states otherwise.
71
71
 
72
72
  ### Code of Conduct
73
73
 
@@ -85,6 +85,29 @@ release from this repo, use the appropriate tag. New Relic usually pushes beta
85
85
  versions of a release to a working branch before tagging them for General
86
86
  Availability.
87
87
 
88
+ The `main` branch houses the code from the latest release. The `dev` branch
89
+ includes unreleased work. Please create all new branches off of `dev`.
90
+
91
+ ## Development Environment Setup
92
+
93
+ 1. Fork and clone the repo locally
94
+ - Fork the repository inside GitHub
95
+ - `git clone git@github.com:<gh username>/newrelic-ruby-agent.git`
96
+ 1. Pick a Ruby version
97
+ - Use rbenv, rvm, chruby, asdf, etc. to install any version of Ruby between 2.4 up to the latest stable version
98
+ 1. Install development dependencies
99
+ - `bundle install`
100
+ 1. Check that your env is setup correctly
101
+ - `bundle exec rake`
102
+
103
+ **Optional:** Install [lefthook](https://github.com/evilmartians/lefthook) to
104
+ integrate our team's git hooks, such as [rubocop](https://github.com/rubocop/rubocop)
105
+ linting into your workflow.
106
+
107
+ **Note:** These setup instructions will not allow you to run the entire test
108
+ suite. Some of our suites require services such as MySQL, Postgres, Redis, and
109
+ others to run.
110
+
88
111
  ## Testing
89
112
 
90
113
  The agent includes a suite of unit and functional tests which should be used to
@@ -105,7 +128,7 @@ This will run the unit tests in standalone mode. You can run against a specific
105
128
  by passing the version name (which should match the name of a subdirectory in test/environments)
106
129
  as an argument to the test:env rake task, like this:
107
130
 
108
- bundle exec rake test:env[rails60]
131
+ bundle exec rake 'test:env[rails60]'
109
132
 
110
133
  These tests are setup to run automatically in
111
134
  [GitHub Actions](https://github.com/newrelic/newrelic-ruby-agent/actions) under several
@@ -141,6 +164,10 @@ These tests can be run by invoking:
141
164
  More details are available in
142
165
  [test/multiverse/README.md](https://github.com/newrelic/newrelic-ruby-agent/blob/main/test/multiverse/README.md).
143
166
 
167
+ ### Leveraging Docker for Development and/or Testing
168
+
169
+ See [DOCKER.md](DOCKER.md).
170
+
144
171
  ## Contributor License Agreement
145
172
 
146
173
  Keep in mind that when you submit your Pull Request, you'll need to sign the CLA
@@ -151,14 +178,6 @@ opensource@newrelic.com.
151
178
  For more information about CLAs, please check out Alex Russell’s excellent post,
152
179
  [“Why Do I Need to Sign This?”](https://infrequently.org/2008/06/why-do-i-need-to-sign-this/).
153
180
 
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
181
  ## Explorer's Hub
163
182
 
164
183
  New Relic hosts and moderates an online forum where customers can interact with
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
5
4
 
6
5
  source 'https://rubygems.org'
7
- gemspec name: "newrelic_rpm"
6
+ gemspec name: 'newrelic_rpm'
data/LICENSE CHANGED
@@ -175,10 +175,6 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- Versions 6.12.0 and above for this project are licensed under
179
- Apache 2.0. For prior versions of this project, please see the
180
- LICENSE file in the root directory of that version for more information.
181
-
182
178
  APPENDIX: How to apply the Apache License to your work.
183
179
 
184
180
  To apply the Apache License to your work, attach the following
@@ -204,5 +200,3 @@
204
200
  See the License for the specific language governing permissions and
205
201
  limitations under the License.
206
202
 
207
-
208
-
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Community Plus header](https://github.com/newrelic/opensource-website/raw/master/src/images/categories/Community_Plus.png)](https://opensource.newrelic.com/oss-category/#community-plus)
1
+ <a href="https://opensource.newrelic.com/oss-category/#community-plus"><picture><source media="(prefers-color-scheme: dark)" srcset="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/dark/Community_Plus.png"><source media="(prefers-color-scheme: light)" srcset="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/Community_Plus.png"><img alt="New Relic Open Source community plus project banner." src="https://github.com/newrelic/opensource-website/raw/main/src/images/categories/Community_Plus.png"></picture></a>
2
2
 
3
3
  # New Relic Ruby Agent
4
4
 
@@ -8,8 +8,12 @@ You can also extend the agent's performance monitoring to
8
8
  [collect and analyze business data](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/introduction-new-relic-ruby#business-data)
9
9
  to help you improve the customer experience and make data-driven business decisions.
10
10
 
11
- The New Relic Ruby Agent is dual-purposed as a either a Gem or a Rails plugin,
12
- hosted on [github](https://github.com/newrelic/newrelic-ruby-agent).
11
+ The New Relic Ruby agent is dual-purposed as either a Gem or a Rails plugin,
12
+ hosted on [GitHub](https://github.com/newrelic/newrelic-ruby-agent).
13
+
14
+ This code is actively maintained by New Relic engineering teams and delivered here in GitHub. See below for troubleshooting and defect reporting instructions.
15
+
16
+ [![Gem Version](https://badge.fury.io/rb/newrelic_rpm.svg)](https://badge.fury.io/rb/newrelic_rpm)
13
17
 
14
18
  ## Supported Environments
15
19
 
@@ -21,11 +25,13 @@ Environments" section below.
21
25
 
22
26
  ## Installing and Using
23
27
 
28
+ The latest released gem for the Ruby agent can be found at [RubyGems.org](https://rubygems.org/gems/newrelic_rpm)
29
+
24
30
  ### Quick Start
25
31
 
26
32
  #### With Bundler
27
33
 
28
- For using with Bundler, add the Ruby Agent to your project's Gemfile.
34
+ For using with Bundler, add the Ruby agent to your project's Gemfile.
29
35
 
30
36
  ```ruby
31
37
  gem 'newrelic_rpm'
@@ -47,7 +53,7 @@ and then require the New Relic Ruby agent in your Ruby start-up sequence:
47
53
  require 'newrelic_rpm'
48
54
  ```
49
55
 
50
- #### Oher Environments
56
+ #### Other Environments
51
57
 
52
58
  Assuming you have installed the agent per above, you may also need to tell the Ruby agent to start for some frameworks and non-framework environments. To do so, add the following to your Ruby start-up sequence start the agent:
53
59
 
@@ -67,30 +73,31 @@ For complete documentation on installing the New Relic Ruby agent, see the follo
67
73
  * [GAE Flexible Environment](https://docs.newrelic.com/docs/agents/ruby-agent/installation/install-new-relic-ruby-agent-gae-flexible-environment)
68
74
  * [Pure Rack Apps](http://docs.newrelic.com/docs/ruby/rack-middlewares)
69
75
  * [Ruby agent and Heroku](https://docs.newrelic.com/docs/agents/ruby-agent/installation/ruby-agent-heroku)
70
- * [Background Jobs](https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs)
76
+ * [Background Jobs](https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/monitor-ruby-background-processes)
71
77
  * [Uninstall the Ruby agent](https://docs.newrelic.com/docs/agents/ruby-agent/installation/uninstall-ruby-agent)
72
78
 
73
79
  ### Recording Deploys
74
80
 
75
- The Ruby Agent supports recording deployments in New Relic via a command line
76
- tool or Capistrano recipes. For more information on these features see
81
+ The Ruby agent supports recording deployments in New Relic via a command line
82
+ tool or Capistrano recipes. For more information on these features, see
77
83
  [our deployment documentation](http://docs.newrelic.com/docs/ruby/recording-deployments-with-the-ruby-agent)
78
84
  for more information.
79
85
 
86
+
80
87
  ## Support
81
88
 
82
89
  Should you need assistance with New Relic products, you are in good hands with several support diagnostic tools and support channels.
83
90
 
84
- This [troubleshooting framework](https://discuss.newrelic.com/t/ruby-troubleshooting-framework-install/108685) steps you through common troubleshooting questions.
91
+ This [troubleshooting framework](https://forum.newrelic.com/s/hubtopic/aAX8W0000008bSgWAI/ruby-troubleshooting-framework-install) steps you through common troubleshooting questions.
85
92
 
86
93
  New Relic offers NRDiag, [a client-side diagnostic utility](https://docs.newrelic.com/docs/using-new-relic/cross-product-functions/troubleshooting/new-relic-diagnostics) that automatically detects common problems with New Relic agents. If NRDiag detects a problem, it suggests troubleshooting steps. NRDiag can also automatically attach troubleshooting data to a New Relic Support ticket.
87
94
 
88
- If the issue has been confirmed as a bug or is a Feature request, please file a Github issue.
95
+ If the issue has been confirmed as a bug or is a Feature request, please file a GitHub issue.
89
96
 
90
97
  **Support Channels**
91
98
 
92
99
  * [New Relic Documentation](https://docs.newrelic.com/docs/agents/ruby-agent): Comprehensive guidance for using our platform
93
- * [New Relic Community](https://discuss.newrelic.com/tags/rubyagent): The best place to engage in troubleshooting questions
100
+ * [New Relic Community](https://forum.newrelic.com): The best place to engage in troubleshooting questions
94
101
  * [New Relic Developer](https://developer.newrelic.com/): Resources for building a custom observability applications
95
102
  * [New Relic University](https://learn.newrelic.com/): A range of online training for New Relic users of every level
96
103
  * [New Relic Technical Support](https://support.newrelic.com/) 24/7/365 ticketed support. Read more about our [Technical Support Offerings](https://docs.newrelic.com/docs/licenses/license-information/general-usage-licenses/support-plan).
@@ -99,17 +106,14 @@ If the issue has been confirmed as a bug or is a Feature request, please file a
99
106
 
100
107
  At New Relic we take your privacy and the security of your information seriously, and are committed to protecting your information. We must emphasize the importance of not sharing personal data in public forums, and ask all users to scrub logs and diagnostic information for sensitive information, whether personal, proprietary, or otherwise.
101
108
 
102
- We define “Personal Data” as any information relating to an identified or identifiable individual, including, for example, your name, phone number, post code or zip code, Device ID, IP address and email address.
109
+ We define “Personal Data” as any information relating to an identified or identifiable individual, including, for example, your name, phone number, post code or zip code, Device ID, IP address, and email address.
103
110
 
104
111
  Please review [New Relic’s General Data Privacy Notice](https://newrelic.com/termsandconditions/privacy) for more information.
105
112
 
106
- ## Roadmap
107
- See our [roadmap](https://github.com/newrelic/newrelic-ruby-agent/blob/main/ROADMAP.md), to learn more about our product vision, understand our plans, and provide us valuable feedback.
108
-
109
113
  ## Contributing
110
114
 
111
- We encourage contributions to improve the New Relic Ruby agent! Keep in mind when you submit your pull request, you'll need to sign the CLA via the click-through using CLA-Assistant. You only have to sign the CLA one time per project.
112
- If you have any questions, or to execute our corporate CLA, required if your contribution is on behalf of a company, please drop us an email at opensource@newrelic.com.
115
+ We encourage contributions to improve the New Relic Ruby agent! Keep in mind when you submit your pull request, you'll need to sign the Contributor License Agreement (CLA) via the click-through using CLA-Assistant. You only have to sign the CLA one time per project.
116
+ If you have any questions, or to execute our corporate CLA (required if your contribution is on behalf of a company), please drop us an email at opensource@newrelic.com.
113
117
 
114
118
  **A note about vulnerabilities**
115
119
 
@@ -124,13 +128,16 @@ the [New Relic Ruby agent](https://opensource.newrelic.com/projects/newrelic/new
124
128
 
125
129
  ## License
126
130
 
127
- The New Relic Ruby agent is licensed under the [Apache 2.0](http://apache.org/licenses/LICENSE-2.0.txt) License.
128
- The New Relic Ruby agent also uses source code from third-party libraries. Full details on which libraries are used and the terms under which they are licensed can be found in the [THIRD_PARTY_NOTICES.md](https://github.com/newrelic/newrelic-ruby-agent/blob/main/THIRD_PARTY_NOTICES.md).
131
+ As of version 6.12 (released July 16, 2020), the New Relic Ruby agent is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for a copy of the license. For older agent versions, check the LICENSE file included with the source code.
132
+
133
+ The New Relic Ruby agent may use source code from third-party libraries. When used, these libraries will be outlined in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
129
134
 
130
135
  ## Thank You
131
136
 
132
- Thank you, and may your application scale to infinity plus one.
137
+ We always look forward to connecting with the community. We welcome [contributions](https://github.com/newrelic/newrelic-ruby-agent#contributing) to our source code and suggestions for improvements, and would love to hear about what you like and want to see in the future.
138
+
139
+ Visit our [project board](https://github.com/orgs/newrelic/projects/84/) to see what's upcoming in a future release, what we're currently working on, and what we're planning next.
133
140
 
134
- Lew Cirne, Founder and CEO
141
+ Thank you,
135
142
 
136
- New Relic, Inc.
143
+ New Relic Ruby agent team
data/Rakefile CHANGED
@@ -1,7 +1,13 @@
1
+ # This file is distributed under New Relic's license terms.
2
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
+ # frozen_string_literal: true
4
+
1
5
  require 'rubygems'
2
6
  require 'rake/testtask'
3
7
  require 'yard'
4
8
  require "#{File.dirname(__FILE__)}/lib/tasks/all.rb"
9
+ require_relative 'lib/tasks/helpers/prompt'
10
+ include Prompt
5
11
 
6
12
  YARD::Rake::YardocTask.new
7
13
 
@@ -9,32 +15,30 @@ task :default => :test
9
15
  task :test => ['test:newrelic']
10
16
 
11
17
  namespace :test do
12
- desc "Run all tests"
13
- task :all => %w{newrelic multiverse}
14
-
15
- begin
16
- require 'test_bisect'
17
- TestBisect::BisectTask.new do |t|
18
- t.test_task_name = 'test:newrelic'
19
- end
20
- rescue LoadError
21
- end
22
-
18
+ desc 'Run all tests'
19
+ task :all => %w[newrelic multiverse all_compatible_envs]
23
20
  agent_home = File.expand_path(File.dirname(__FILE__))
24
21
 
25
- desc "Run agent performance tests"
22
+ desc 'Run agent performance tests'
26
23
  task :performance, [:suite, :name] => [] do |t, args|
27
24
  require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'performance', 'lib', 'performance'))
28
25
  options = {}
29
26
  options[:suite] = args[:suite] if args[:suite]
30
- options[:name] = args[:name] if args[:name]
27
+ options[:name] = args[:name] if args[:name]
31
28
  Performance::Runner.new(options).run_and_report
32
29
  end
33
30
 
34
- desc "Run agent within existing mini environments"
35
- task :env, [:env1, :env2, :env3, :env4, :env5, :env6] => [] do |t, args|
31
+ desc 'Run agent within existing mini environment(s): env[name1,name2,name3,etc.]'
32
+ task :env do |t, args|
36
33
  require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'environments', 'lib', 'environments', 'runner'))
37
- Environments::Runner.new(args.map{|_,v| v}).run_and_report
34
+ Environments::Runner.new(args.to_a).run_and_report
35
+ end
36
+
37
+ desc 'Run all mini environment tests known to work with the current Ruby version'
38
+ task :all_compatible_envs do |t, args|
39
+ require File.expand_path(File.join(File.dirname(__FILE__), 'test', 'helpers', 'ruby_rails_mappings'))
40
+ rails_versions = rails_versions_for_ruby_version(RUBY_VERSION)
41
+ Rake::Task['test:env'].invoke(*rails_versions)
38
42
  end
39
43
 
40
44
  Rake::TestTask.new(:intentional_fail) do |t|
@@ -51,18 +55,17 @@ namespace :test do
51
55
 
52
56
  # Note unit testing task is defined in lib/tasks/tests.rake to facilitate
53
57
  # running them in a rails application environment.
54
-
55
58
  end
56
59
 
57
60
  desc 'Record build number and stage'
58
- task :record_build, [ :build_number, :stage ] do |t, args|
61
+ task :record_build, [:build_number, :stage] do |t, args|
59
62
  build_string = args.build_number
60
63
  build_string << ".#{args.stage}" unless args.stage.nil? || args.stage.empty?
61
64
 
62
- gitsha = File.exists?(".git") ? `git rev-parse HEAD` : "Unknown"
65
+ gitsha = File.exist?('.git') ? `git rev-parse HEAD` : 'Unknown'
63
66
  gitsha.chomp!
64
67
 
65
- File.open("lib/new_relic/build.rb", "w") do |f|
68
+ File.open('lib/new_relic/build.rb', 'w') do |f|
66
69
  f.write("# GITSHA: #{gitsha}\n")
67
70
  f.write("module NewRelic; module VERSION; BUILD='#{build_string}'; end; end\n")
68
71
  end
@@ -90,14 +93,14 @@ task :update_ca_bundle do |t|
90
93
  bundle_last_update = `cd #{ca_bundle_path} && git show -s --format=%ci HEAD`
91
94
  puts "Source CA bundle last updated #{bundle_last_update}"
92
95
 
93
- bundle_path = "cert/cacert.pem"
96
+ bundle_path = 'cert/cacert.pem'
94
97
  cert_paths = []
95
98
  Dir.glob("#{ca_bundle_path}/*.pem").each { |p| cert_paths << p }
96
99
  cert_paths.sort!
97
100
 
98
101
  puts "Writing #{cert_paths.size} certs to bundle at #{bundle_path}..."
99
102
 
100
- File.open(bundle_path, "w") do |f|
103
+ File.open(bundle_path, 'w') do |f|
101
104
  cert_paths.each do |cert_path|
102
105
  cert_name = File.basename(cert_path, '.pem')
103
106
  puts "Adding #{cert_name}"
@@ -110,31 +113,26 @@ task :update_ca_bundle do |t|
110
113
  end
111
114
 
112
115
  namespace :cross_agent_tests do
113
- cross_agent_tests_upstream_path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'cross_agent_tests'))
114
- cross_agent_tests_local_path = File.expand_path(File.join(File.dirname(__FILE__), 'test', 'fixtures', 'cross_agent_tests'))
116
+ CROSS_AGENT_TESTS_UPSTREAM_PATH = File.expand_path(File.join('..', 'cross_agent_tests')).freeze
117
+ CROSS_AGENT_TESTS_LOCAL_PATH = File.expand_path(File.join('test', 'fixtures', 'cross_agent_tests')).freeze
115
118
 
116
- # Note: before you pull, make sure your local repo is on the correct, synced branch!
117
119
  desc 'Pull latest changes from cross_agent_tests repo'
118
120
  task :pull do
119
- puts "Updating embedded cross_agent_tests from #{cross_agent_tests_upstream_path}..."
120
- cmd = "rsync -avu --exclude .git #{cross_agent_tests_upstream_path}/ #{cross_agent_tests_local_path}/"
121
- puts cmd
122
- system(cmd)
121
+ command = " rsync -av --exclude .git #{CROSS_AGENT_TESTS_UPSTREAM_PATH}/ #{CROSS_AGENT_TESTS_LOCAL_PATH}/"
122
+ prompt_to_continue(command)
123
123
  end
124
124
 
125
125
  desc 'Copy changes from embedded cross_agent_tests to official repo working copy'
126
126
  task :push do
127
- puts "Copying changes from embedded cross_agent_tests to #{cross_agent_tests_upstream_path}..."
128
- cmd = "rsync -avu #{cross_agent_tests_local_path}/ #{cross_agent_tests_upstream_path}/"
129
- puts cmd
130
- system(cmd)
127
+ command = "rsync -av #{CROSS_AGENT_TESTS_LOCAL_PATH}/ #{CROSS_AGENT_TESTS_UPSTREAM_PATH}/"
128
+ prompt_to_continue(command, 'remote (agent spec repo)')
131
129
  end
132
130
  end
133
131
 
132
+ desc 'Start an interactive console session'
134
133
  task :console do
135
- require 'pry'
134
+ require 'pry' if ENV['ENABLE_PRY']
136
135
  require 'newrelic_rpm'
137
136
  ARGV.clear
138
137
  Pry.start
139
138
  end
140
-
@@ -1,8 +1,8 @@
1
1
  # Third Party Notices
2
2
 
3
- The New Relic Ruby Agent uses source code from third party libraries which carry
4
- their own copyright notices and license terms. These notices are provided
5
- below.
3
+ The New Relic Ruby agent may make use of source code from third party libraries
4
+ which carry their own copyright notices and license terms. Any such content will
5
+ be provided below.
6
6
 
7
7
  In the event that a required notice is missing or incorrect, please notify us
8
8
  by e-mailing [open-source@newrelic.com](mailto:open-source@newrelic.com).
@@ -11,203 +11,18 @@ For any licenses that require the disclosure of source
11
11
  code, the source code can be found at:
12
12
  [https://github.com/newrelic/newrelic-ruby-agent](https://github.com/newrelic/newrelic-ruby-agent).
13
13
 
14
- ## Content
15
14
 
16
- * [symantec](#symantec)
15
+ ## Current Notices and Terms
17
16
 
18
- ### symantec
17
+ As of version 7.0 (released April 23, 2021), the New Relic Ruby agent does not
18
+ include any third party software with its distribution.
19
19
 
20
- This product includes certificates from Symantec which are used under the
21
- following license (https://docs.broadcom.com/doc/root-certificate-license-agreement-en):
20
+ The Ruby agent team leverages a variety of open source third party software for
21
+ the development of the agent but not distributed with the agent. Some of these
22
+ software packages are referenced as development dependencies in the agent's
23
+ [newrelic_rpm.gemspec](newrelic_rpm.gemspec) file. We are grateful
24
+ to the maintainers and contributors for all of these packages.
22
25
 
23
- ```
24
- ROOT CERTIFICATE LICENSE AGREEMENT
25
- SYMANTEC CORPORATION AND/OR ITS AFFILIATES (“SYMANTEC”) IS WILLING TO PROVIDE THE
26
- ROOT CERTIFICATES TO YOU AS THE INDIVIDUAL, THE COMPANY, OR THE LEGAL ENTITY THAT
27
- WILL BE UTILIZING THE ROOT CERTIFICATES (REFERENCED BELOW AS “YOU” OR “YOUR”)
28
- ONLY ON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS OF THIS AGREEMENT
29
- (“AGREEMENT”). READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY
30
- BEFORE USING THE ROOT CERTIFICATES. THIS IS A LEGAL AND ENFORCEABLE CONTRACT
31
- BETWEEN YOU AND SYMANTEC. BY USING THE ROOT CERTIFICATES, YOU AGREE TO THE
32
- TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THESE TERMS AND
33
- CONDITIONS, MAKE NO FURTHER USE OF THE ROOT CERTIFICATES. UNLESS OTHERWISE
34
- DEFINED HEREIN, CAPITALIZED TERMS WILL HAVE THE MEANING GIVEN IN THE “DEFINITIONS”
35
- SECTION OF THIS AGREEMENT AND SUCH CAPITALIZED TERMS MAY BE USED IN THE
36
- SINGULAR OR IN THE PLURAL, AS THE CONTEXT REQUIRES.
37
-
38
- ROOT CERTIFICATE TERMS AND CONDITIONS
39
- 1. DEFINITIONS.
40
- "Certificate" means an electronic file that, at least, states a name or identifies the issuing Certificate
41
- Authority, identifies the subscriber, contains the subscriber's public key, identifies the Certificate's
42
- operational period, contains a Certificate serial number, and contains a digital signature of the issuing
43
- Certificate Authority.
44
- “Certificate Authority” or “CA” means a person or entity authorized to issue, suspend, or revoke
45
- Certificates.
46
- “Intermediate CA” means a CA Certificate signed by a Root Certificate Intermediate that issues
47
- Certificates either to end-entities or other Certificate Authorities, but not to both.
48
- "Products" means all versions of Your product or service with which the Root Certificates are incorporated
49
- (including successor products and services or any major or minor upgrades thereto).
50
- "Root Certificate" means a self-signed Certificate issued by a top-level Certificate Authority to itself, which
51
- includes such Certificate Authority's public key. The Root Certificates and Root Certificate files to be
52
- provided by Company to Customer pursuant to this Agreement are available for download at
53
- https://www.verisign.com/support/roots.html, https://www.thawte.com/roots/index.html or
54
- https://www.geotrust.com/resources/rootcertificates/index.html.
55
- 2. LICENSE. During the term of this Agreement, Symantec grants You a royalty-free, non-exclusive, nontransferable license to (a) use the Root Certificate for the purposes of testing (without the right to modify);
56
- (b) make copies of Root Certificates only in order to embed and incorporate them, unmodified and in full,
57
- as roots in Your Products; (c) distribute the Root Certificates as embedded and incorporated in such
58
- Products; and (d) use the relevant logos and trademarks of Symantec in Your marketing materials,
59
- advertisements, product data sheets, product packaging and websites solely conjunction with the
60
- distribution of the Root Certificates in accordance with Symantec’s published guidelines for such usage.
61
- You shall not have the right to further distribute the Root Certificates other than as described herein
62
- without an additional license grant, in a separate writing, from Symantec.
63
- 3. RESTRICTIONS. You may not: (a) modify or create any derivative works of Root Certificates; (b)
64
- assign, sublicense, sell, rent, or lease Symantec's root keys or Root Certificates; (c) use such Root
65
- Certificates except as expressly permitted under this Agreement; (d) remove or alter any trademark, logo,
66
- copyright, or other proprietary notices, legends, symbols, or labels provided in the Root Certificates; or (e)
67
- certify, or cause a third party to certify, the public key contained in the Root Certificates by issuing or
68
- creating a Certificate containing such public key.
69
- 4. CUSTOMER’S OBLIGATIONS.
70
- 4.1. During the term of this Agreement, You shall use commercially reasonable efforts regularly check the
71
- applicable Symantec URL for updates to the Root Certificates and update Root Certificates embedded
72
- into Your Products with the most currently available Root Certificates, unmodified and in full, or as a patch
73
- or update. If Symantec updates its Root Certificates,, You shall use commercially reasonable efforts to (i)
74
- discontinue all copying and use of the Root Certificates which have been replaced, and (ii) to use
75
- Symantec’s then-current Root Certificates. Any updates to the Root Certificates are incorporated into and
76
- subject to the terms of this Agreement.
77
- 4.2. You shall appoint at least one (1) individual as the administrative contact designated to address any
78
- Root Certificate issues and shall provide the contact information for such individual to dl-tssroot@symantec.com.
79
- 4.3 In the event You become aware of or suspect any event that diminishes the integrity of Symantec's
80
- data or public key system ("Compromise"), You shall immediately notify Symantec at dl-tss-
81
- root@symantec.com of such Compromise, and take reasonable steps to assist and cooperate with
82
- Symantec to remedy the Compromise.
83
- 4.4 In the event that Symantec modifies these terms of use for the Root certificates for all end users,
84
- Symantec shall post the modified terms for the Agreement on the applicable URL and may post the
85
- modified terms on the Symantec corporate website. You shall be responsible for regularly checking the
86
- applicable URL for modifications to this Agreement. Such modifications shall be effective and binding on
87
- Customer within thirty (30) days of Symantec’s posting such modifications to its website. If you do not
88
- accept the modified Agreement, discontinue use of the Root Certificates and this Agreement will be
89
- deemed as terminated.
90
- 5. CONFIDENTIALITY.
91
- 5.1. Confidential Information. "Confidential Information" means the root private keys corresponding to the
92
- public key in a Root Certificate, and any confidential, trade secret, or other proprietary information
93
- disclosed by a party to the other party under this Agreement, except for Information that: (i) is public
94
- knowledge at the time of disclosure, (ii) was known by the receiving party before disclosure by the
95
- disclosing party, or becomes public knowledge or otherwise known to the receiving party after such
96
- disclosure, other than by breach of a confidentiality obligation, or (iii) is independently developed by the
97
- receiving party by persons without access to Confidential Information of the disclosing party.
98
- 5.2. Protection of Confidential Information. The receiving party shall: (i) not disclose the Confidential
99
- information to any third party, (ii) not use the Confidential Information except for purposes of performing
100
- this Agreement, and (iii) take steps consistent with its protection of its own confidential and proprietary
101
- information (but in no event exercise less than reasonable care) to prevent unauthorized disclosure of the
102
- Confidential Information. Each party acknowledges that breach of this Section 5 may cause irreparable
103
- harm to the disclosing party entitling the disclosing party to injunctive relief, among other remedies.
104
- 5.3. Mutual Cooperation. Each party will notify and cooperate with the other party in enforcing the
105
- disclosing party's rights if such party becomes aware of a threatened or actual violation of the
106
- confidentiality requirements of this Section 5. Each party shall have confidentiality agreements with its
107
- employees, agents or independent contractors sufficient in scope to fulfill its confidentiality obligations
108
- under this Agreement.
109
- 6. INTELLECTUAL PROPERTY. You acknowledge that Symantec, including its wholly owned
110
- subsidiaries, retains all intellectual property rights and title (including any patent, copyright, trademark,
111
- trade secret, and other rights) in and to the Root Certificates, the public and private keys corresponding to
112
- such Root Certificates ("Symantec Intellectual Property"). This Agreement does not give You any
113
- intellectual property rights in the Symantec intellectual property except for the license granted in Section
114
- 2. To the extent You use Symantec's trademarks or logos as permitted herein, You agree to comply with
115
- all usage requirements set forth in the then current version of Symantec's Logo and Trademark Usage
116
- Guide (http://www.symantec.com/about/profile/policies/trademarks.jsp) and any other guides and
117
- procedures of Symantec.
118
- 7. NO WARRANTIES. THE ROOT CERTIFICATES, INCLUDING UPDATES, ARE PROVIDED "AS IS"
119
- WITHOUT ANY WARRANTY WHATSOEVER. SYMANTEC HEREBY DISCLAIMS ALL WARRANTIES,
120
- WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING WITHOUT LIMITATION, ANY
121
- IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
122
- NONINFRINGEMENT OF THIRD PARTY RIGHTS.
123
- 8. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY WILL
124
- SYMANTEC OR ITS LICENSORS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY
125
- CONSEQUENTIAL, INDIRECT, SPECIAL, INCIDENTAL, OR EXEMPLARY DAMAGES, WHETHER
126
- FORESEEABLE OR UNFORESEEABLE, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE
127
- POSSIBILITY OF SUCH DAMAGES. YOU WILL TAKE REASONABLE MEASURES TO INSURE THAT
128
- THE TERMS AND CONDITIONS SET FORTH IN THE PRECEDING SENTENCE OF THIS SECTION 8
129
- ARE INCORPORATED INTO ANY AGREEMENT BETWEEN YOU AND YOUR CUSTOMERS OR
130
- LICENSEES. SYMANTEC SHALL NOT BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY
131
- DAMAGES CAUSED BY YOUR OR A THIRD PARTY’S CONTINUED USE OF ANY OUTDATED
132
- ROOTS FOR WHICH AN UPDATED VERSION IS MADE AVAILABLE BY SYMANTEC. FURTHER,
133
- UNDER NO CIRCUMSTANCES WILL SYMANTEC'S LIABILITY FOR ANY ACTION OR CLAIM EXCEED
134
- USD$1,000, REGARDLESS OF WHETHER SUCH ACTION OR CLAIM IS BASED IN CONTRACT,
135
- TORT, STRICT LIABILITY, OR OTHERWISE.
136
- 9. TERM AND TERMINATION.
137
- 9.1. Term. This Agreement shall become effective as of the earlier of, Your first use of the Root
138
- Certificates, and shall remain in effect until the earlier of (i) Your discontinued use of the Root Certificates;
139
- (ii) termination by either party under the terms of Section 9.2, below; or (iii) Symantec’s notice to You that
140
- Symantec is no longer providing Root Certificates for use.
141
- 9.2. Termination for Default/Insolvency. Either party shall be entitled to terminate this Agreement in the
142
- event of a failure by the other party to perform any of its material obligations under this Agreement if such
143
- breach is not cured within thirty (30) days after receipt of written notice thereof from the non-defaulting
144
- party or within forty-eight (48) hours after receipt of such written notice if a breach by You may
145
- compromise the security of the Symantec Trust Network or other system. This Agreement shall terminate
146
- upon the election of and notice from a party to the other if the other party is adjudged insolvent or
147
- bankrupt, or the institution of any proceedings by or against the other party seeking relief, reorganization,
148
- or arrangement under any laws relating to insolvency, or any assignment for the benefit of creditors, or
149
- the appointment of a receiver, liquidator, or trustee of any of the other party's property or assets, or the
150
- liquidation, dissolution, or winding up of the other party's business.
151
- 9.3. Effect of Expiration or Termination. Upon expiration or termination of this Agreement, except for a
152
- breach by You, You may continue to distribute the current version of Your Products which incorporate the
153
- Root Certificates. Any updates or upgrades thereto may not include the Root Certificates and You shall
154
- stop making copies of Root Certificates, shall stop including Root Certificates in Your Products, and shall
155
- stop using Symantec’s logos and trademarks. The provisions of Sections 3, 4.3, 5, 6, 7, 8, 9.3, and 10
156
- shall survive termination of this Agreement.
157
- 10. GENERAL.
158
- 10.1. Governing Laws. This Agreement and any disputes relating to the services provided hereunder shall
159
- be governed and interpreted according to each of the following laws, respectively, without regard to its
160
- conflicts of law provisions: (a) the laws of the State of California, if You are located in North America or
161
- Latin America; or (b) the law of England, if You are located in Europe, Middle East or Africa; or (c) the
162
- laws of Singapore, if You are located in Asia Pacific including Japan. The United Nations Convention on
163
- Contracts for the International Sale of Goods shall not apply to this Agreement.
164
- 10.2. Binding Upon Successors; Assignment. This Agreement shall be binding upon, and inure to the
165
- benefit of, the successors, executors, heirs, representatives, administrators, and assigns of the parties
166
- hereto. Notwithstanding the foregoing, You may not assign Your rights or obligations under this
167
- Agreement without the prior written consent of Symantec. Any such purported assignment of this
168
- Agreement without obtaining written consent shall be void and of no effect.
169
- 10.3. Severability; Enforcement; No Waiver. The unenforceability of any provision or provisions of this
170
- Agreement shall not impair the enforceability of any other part of this Agreement. If any provision of this
171
- Agreement shall be deemed invalid or unenforceable, in whole or in part, this Agreement shall be deemed
172
- amended to delete or modify, as necessary, the invalid or unenforceable provision to render it valid,
173
- enforceable, and, insofar as possible, consistent with the original intent of the parties. The failure of a
174
- party, at any time or from time to time, to require performance of any obligations of the other party
175
- hereunder shall not be deemed a waiver and shall not affect its right to enforce any provision of this
176
- Agreement at a subsequent time.
177
- 10.4. Entire Agreement; Amendments; Waivers. This Agreement constitutes the entire understanding and
178
- agreement of the parties, whether written or oral, with respect to the subject matter hereof and supersede
179
- all prior and contemporaneous agreements or understandings between the parties. Any term or provision
180
- of this Agreement may be amended, and the observance of any term of this Agreement may be waived,
181
- only by writing signed by the parties to be bound thereby.
182
- 10.5. Compliance with Law, Export Requirements and Foreign Reshipment Liability. Each party shall
183
- comply with all applicable federal, state and local laws and regulations in connection with its performance
184
- under this Agreement. Services, including documentation, may include controlled technology or technical
185
- data (collectively “Controlled Technology”) that is subject to the U.S. Export Administration Regulations
186
- (EAR), and diversion contrary to U.S. law is prohibited. You agree to comply with all relevant laws
187
- including the U.S. EAR and the laws of any country from which Controlled Technology is exported. All
188
- Controlled Technology is prohibited for export or re-export to Cuba, North Korea, Iran, Sudan and Syria
189
- and to any country or its nationals subject to relevant embargo or sanction or to any entity or person for
190
- which an export license is required per any relevant restricted party list, without first obtaining a license.
191
- Furthermore, You hereby agree that You will not use or allow use of Controlled Technology in connection
192
- with chemical, biological, or nuclear weapons, or missiles, drones or space launch vehicles capable of
193
- delivering such weapons. Symantec shall have the right to suspend performance of any of its obligations
194
- under this Agreement, without any prior notice being required and without any liability to Customer, if You
195
- fail to comply with this provision.
196
- 10.6. Notices. You will make all notices, demands or requests to Symantec with respect to this Agreement
197
- in writing to the "Contact" address listed on the website from where you downloaded the Root Certificates,
198
- with a copy to: General Counsel – Legal Department, Symantec Corporation, 350 Ellis Street, Mountain
199
- View, California 94043, USA. Notices shall be effective on the date received (unless the notice specifies a
200
- later date) only if it is sent by a courier service that confirms delivery in writing or if sent by certified or
201
- registered mail, postage prepaid, return receipt requested. Symantec may post notices and updates
202
- regarding the Agreement or the Root Certificates at the URL provided to You for the Root Certificates.
203
- You shall be responsible for regularly checking the applicable URL for notices from Symantec regarding
204
- the Agreement or the Root Certificates. No notices, demands, or requests to Symantec with respect to
205
- this Agreement may be delivered by electronic mail. You shall immediately notify Symantec of any legal
206
- notices served on You that might affect Symantec, and shall promptly forward the original or a copy of
207
- such notice to Symantec.
208
- 10.7. Independent Parties. The relationship between You and Symantec is that of independent
209
- contractors. Neither party nor its employees, consultants, contractors, or agents are agents, employees,
210
- or joint venturers of the other party, nor do they have any authority to bind the other party by contract or
211
- otherwise to any obligation.
212
- Root Certificate License Agreement v3.0 (January 2014)
213
- ```
26
+ For versions older than 7.0, please consult the `THIRD_PARTY_NOTICES.md`
27
+ document distributed with the agent. Any version of the agent not containing
28
+ that document are not thought to include any third party software.
data/Thorfile ADDED
@@ -0,0 +1,5 @@
1
+ # This file is distributed under New Relic's license terms.
2
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
3
+ # frozen_string_literal: true
4
+
5
+ Dir['./lib/tasks/**/*.thor'].sort.each { |f| load f }
data/bin/newrelic CHANGED
@@ -1,13 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # This command has been renamed "newrelic_rpm"
2
5
  # executes one of the commands in the new_relic/commands directory
3
6
  # pass the name of the command as an argument
4
7
 
5
- $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..','lib'))
6
- require 'new_relic/cli/command'
7
- begin
8
- NewRelic::Cli::Command.run
9
- rescue NewRelic::Cli::Command::CommandFailure => failure
10
- STDERR.puts failure.message
11
- STDERR.puts failure.options if failure.options
12
- exit 1
13
- end
8
+ load File.dirname(__FILE__) + '/newrelic_rpm'