newrelic_rpm 5.5.0.348 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (364) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.yardopts +1 -0
  4. data/CHANGELOG.md +931 -0
  5. data/CONTRIBUTING.md +117 -19
  6. data/Gemfile +6 -2
  7. data/Guardfile +18 -1
  8. data/LICENSE +208 -38
  9. data/README.md +80 -84
  10. data/ROADMAP.md +24 -0
  11. data/Rakefile +2 -0
  12. data/THIRD_PARTY_NOTICES.md +213 -0
  13. data/bin/nrdebug +1 -1
  14. data/config.dot +1 -0
  15. data/init.rb +1 -1
  16. data/install.rb +1 -1
  17. data/lib/new_relic/agent.rb +111 -20
  18. data/lib/new_relic/agent/adaptive_sampler.rb +1 -1
  19. data/lib/new_relic/agent/agent.rb +182 -194
  20. data/lib/new_relic/agent/agent_logger.rb +5 -1
  21. data/lib/new_relic/agent/attribute_filter.rb +85 -25
  22. data/lib/new_relic/agent/attribute_processing.rb +1 -1
  23. data/lib/new_relic/agent/attributes.rb +152 -0
  24. data/lib/new_relic/agent/audit_logger.rb +11 -1
  25. data/lib/new_relic/agent/autostart.rb +19 -15
  26. data/lib/new_relic/agent/chained_call.rb +1 -1
  27. data/lib/new_relic/agent/commands/agent_command.rb +1 -1
  28. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -22
  29. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -1
  30. data/lib/new_relic/agent/configuration.rb +1 -1
  31. data/lib/new_relic/agent/configuration/default_source.rb +656 -188
  32. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -1
  33. data/lib/new_relic/agent/configuration/environment_source.rb +5 -3
  34. data/lib/new_relic/agent/configuration/event_harvest_config.rb +45 -0
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +2 -1
  36. data/lib/new_relic/agent/configuration/manager.rb +17 -13
  37. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  38. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  39. data/lib/new_relic/agent/configuration/security_policy_source.rb +15 -1
  40. data/lib/new_relic/agent/configuration/server_source.rb +39 -4
  41. data/lib/new_relic/agent/configuration/yaml_source.rb +12 -7
  42. data/lib/new_relic/agent/connect/request_builder.rb +63 -0
  43. data/lib/new_relic/agent/connect/response_handler.rb +61 -0
  44. data/lib/new_relic/agent/custom_event_aggregator.rb +1 -1
  45. data/lib/new_relic/agent/database.rb +2 -3
  46. data/lib/new_relic/agent/database/explain_plan_helpers.rb +1 -1
  47. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  48. data/lib/new_relic/agent/database/obfuscator.rb +1 -1
  49. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -1
  50. data/lib/new_relic/agent/database_adapter.rb +33 -0
  51. data/lib/new_relic/agent/datastores.rb +7 -9
  52. data/lib/new_relic/agent/datastores/metric_helper.rb +2 -3
  53. data/lib/new_relic/agent/datastores/mongo.rb +2 -2
  54. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +3 -3
  55. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  56. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +9 -9
  57. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +1 -1
  58. data/lib/new_relic/agent/datastores/redis.rb +1 -5
  59. data/lib/new_relic/agent/deprecator.rb +1 -1
  60. data/lib/new_relic/agent/distributed_tracing.rb +115 -32
  61. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +3 -2
  62. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +61 -46
  63. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  64. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  65. data/lib/new_relic/agent/{distributed_trace_payload.rb → distributed_tracing/distributed_trace_payload.rb} +32 -113
  66. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  67. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  68. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +126 -0
  69. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  70. data/lib/new_relic/agent/error_collector.rb +88 -58
  71. data/lib/new_relic/agent/error_event_aggregator.rb +10 -7
  72. data/lib/new_relic/agent/error_filter.rb +167 -0
  73. data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
  74. data/lib/new_relic/agent/event_aggregator.rb +27 -33
  75. data/lib/new_relic/agent/event_buffer.rb +1 -1
  76. data/lib/new_relic/agent/event_listener.rb +1 -1
  77. data/lib/new_relic/agent/event_loop.rb +1 -1
  78. data/lib/new_relic/agent/external.rb +13 -11
  79. data/lib/new_relic/agent/guid_generator.rb +28 -0
  80. data/lib/new_relic/agent/harvester.rb +1 -1
  81. data/lib/new_relic/agent/heap.rb +1 -1
  82. data/lib/new_relic/agent/hostname.rb +16 -2
  83. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  84. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +25 -20
  85. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +29 -14
  86. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +18 -22
  87. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +11 -12
  88. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +17 -5
  89. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +5 -7
  90. data/lib/new_relic/agent/http_clients/uri_util.rb +12 -11
  91. data/lib/new_relic/agent/instrumentation.rb +1 -1
  92. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +26 -43
  93. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +53 -73
  94. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +81 -56
  95. data/lib/new_relic/agent/instrumentation/active_job.rb +7 -8
  96. data/lib/new_relic/agent/instrumentation/active_merchant.rb +1 -1
  97. data/lib/new_relic/agent/instrumentation/active_record.rb +85 -38
  98. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +17 -6
  99. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +152 -0
  100. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +35 -11
  101. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +47 -51
  102. data/lib/new_relic/agent/instrumentation/active_storage.rb +23 -0
  103. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +63 -0
  104. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +10 -9
  105. data/lib/new_relic/agent/instrumentation/authlogic.rb +1 -1
  106. data/lib/new_relic/agent/instrumentation/bunny.rb +13 -132
  107. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  108. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  109. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  110. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +11 -4
  111. data/lib/new_relic/agent/instrumentation/curb.rb +11 -183
  112. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  113. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  114. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  115. data/lib/new_relic/agent/instrumentation/data_mapper.rb +5 -3
  116. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  117. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  118. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  119. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +9 -49
  120. data/lib/new_relic/agent/instrumentation/excon.rb +4 -3
  121. data/lib/new_relic/agent/instrumentation/excon/connection.rb +8 -5
  122. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -2
  123. data/lib/new_relic/agent/instrumentation/grape.rb +14 -107
  124. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  125. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  126. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  127. data/lib/new_relic/agent/instrumentation/httpclient.rb +10 -30
  128. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  129. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  130. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  131. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  132. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  133. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  134. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  135. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  136. data/lib/new_relic/agent/instrumentation/memcache.rb +55 -68
  137. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  138. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +39 -118
  139. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  140. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  141. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  142. data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
  143. data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
  144. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +4 -2
  145. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +20 -11
  146. data/lib/new_relic/agent/instrumentation/mongo.rb +17 -4
  147. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +36 -3
  148. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  149. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  150. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  151. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  152. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +100 -0
  153. data/lib/new_relic/agent/instrumentation/padrino.rb +19 -52
  154. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  155. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  156. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  157. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +1 -1
  158. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  159. data/lib/new_relic/agent/instrumentation/rack.rb +30 -138
  160. data/lib/new_relic/agent/instrumentation/rack/chain.rb +58 -0
  161. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  162. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  163. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +37 -0
  164. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +1 -1
  165. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
  166. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +1 -1
  167. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_cable.rb +6 -7
  169. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_controller.rb +4 -4
  170. data/lib/new_relic/agent/instrumentation/{rails4 → rails_notifications}/action_view.rb +4 -4
  171. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +1 -1
  172. data/lib/new_relic/agent/instrumentation/rake.rb +14 -155
  173. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  174. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  175. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  176. data/lib/new_relic/agent/instrumentation/redis.rb +13 -102
  177. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  178. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  179. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  180. data/lib/new_relic/agent/instrumentation/resque.rb +22 -30
  181. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  182. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  183. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +35 -0
  184. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  185. data/lib/new_relic/agent/instrumentation/sequel.rb +2 -2
  186. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  187. data/lib/new_relic/agent/instrumentation/sidekiq.rb +48 -24
  188. data/lib/new_relic/agent/instrumentation/sinatra.rb +21 -160
  189. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  190. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +30 -35
  191. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +124 -0
  192. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  193. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  194. data/lib/new_relic/agent/instrumentation/sunspot.rb +1 -1
  195. data/lib/new_relic/agent/instrumentation/typhoeus.rb +12 -74
  196. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  197. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  198. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  199. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  200. data/lib/new_relic/agent/javascript_instrumentor.rb +15 -10
  201. data/lib/new_relic/agent/log_once.rb +1 -1
  202. data/lib/new_relic/agent/logging.rb +139 -0
  203. data/lib/new_relic/agent/memory_logger.rb +1 -1
  204. data/lib/new_relic/agent/messaging.rb +15 -82
  205. data/lib/new_relic/agent/method_tracer.rb +10 -8
  206. data/lib/new_relic/agent/method_tracer_helpers.rb +5 -5
  207. data/lib/new_relic/agent/monitors.rb +27 -0
  208. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  209. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  210. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +4 -4
  211. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +4 -7
  212. data/lib/new_relic/agent/new_relic_service.rb +106 -40
  213. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  214. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -2
  215. data/lib/new_relic/agent/new_relic_service/marshaller.rb +6 -27
  216. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +1 -1
  217. data/lib/new_relic/agent/noticible_error.rb +22 -0
  218. data/lib/new_relic/agent/null_logger.rb +1 -1
  219. data/lib/new_relic/agent/obfuscator.rb +1 -1
  220. data/lib/new_relic/agent/parameter_filtering.rb +19 -6
  221. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -1
  222. data/lib/new_relic/agent/pipe_channel_manager.rb +1 -1
  223. data/lib/new_relic/agent/pipe_service.rb +1 -1
  224. data/lib/new_relic/agent/prepend_supportability.rb +1 -1
  225. data/lib/new_relic/agent/priority_sampled_buffer.rb +9 -4
  226. data/lib/new_relic/agent/range_extensions.rb +1 -1
  227. data/lib/new_relic/agent/rules_engine.rb +1 -1
  228. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +1 -1
  229. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -1
  230. data/lib/new_relic/agent/sampler.rb +1 -1
  231. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  232. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  233. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -1
  234. data/lib/new_relic/agent/samplers/memory_sampler.rb +2 -2
  235. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  236. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -1
  237. data/lib/new_relic/agent/span_event_aggregator.rb +3 -5
  238. data/lib/new_relic/agent/span_event_primitive.rb +129 -65
  239. data/lib/new_relic/agent/sql_sampler.rb +12 -12
  240. data/lib/new_relic/agent/stats.rb +1 -1
  241. data/lib/new_relic/agent/stats_engine.rb +3 -3
  242. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +2 -2
  243. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -1
  244. data/lib/new_relic/agent/supported_versions.rb +3 -3
  245. data/lib/new_relic/agent/synthetics_event_aggregator.rb +1 -1
  246. data/lib/new_relic/agent/system_info.rb +18 -4
  247. data/lib/new_relic/agent/threading/agent_thread.rb +2 -2
  248. data/lib/new_relic/agent/threading/backtrace_node.rb +1 -1
  249. data/lib/new_relic/agent/threading/backtrace_service.rb +4 -4
  250. data/lib/new_relic/agent/threading/thread_profile.rb +10 -24
  251. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +1 -1
  252. data/lib/new_relic/agent/tracer.rb +509 -0
  253. data/lib/new_relic/agent/transaction.rb +143 -171
  254. data/lib/new_relic/agent/transaction/abstract_segment.rb +33 -6
  255. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -3
  256. data/lib/new_relic/agent/transaction/distributed_tracer.rb +177 -0
  257. data/lib/new_relic/agent/transaction/distributed_tracing.rb +59 -149
  258. data/lib/new_relic/agent/transaction/external_request_segment.rb +32 -39
  259. data/lib/new_relic/agent/transaction/message_broker_segment.rb +5 -12
  260. data/lib/new_relic/agent/transaction/request_attributes.rb +1 -1
  261. data/lib/new_relic/agent/transaction/segment.rb +28 -2
  262. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -1
  263. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  264. data/lib/new_relic/agent/transaction/trace.rb +6 -13
  265. data/lib/new_relic/agent/transaction/trace_builder.rb +1 -2
  266. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  267. data/lib/new_relic/agent/transaction/trace_node.rb +12 -8
  268. data/lib/new_relic/agent/transaction/tracing.rb +1 -100
  269. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  270. data/lib/new_relic/agent/transaction_error_primitive.rb +11 -16
  271. data/lib/new_relic/agent/transaction_event_aggregator.rb +1 -1
  272. data/lib/new_relic/agent/transaction_event_primitive.rb +29 -40
  273. data/lib/new_relic/agent/transaction_event_recorder.rb +4 -4
  274. data/lib/new_relic/agent/transaction_metrics.rb +1 -1
  275. data/lib/new_relic/agent/transaction_sampler.rb +2 -6
  276. data/lib/new_relic/agent/transaction_time_aggregator.rb +50 -26
  277. data/lib/new_relic/agent/utilization/aws.rb +1 -1
  278. data/lib/new_relic/agent/utilization/azure.rb +1 -1
  279. data/lib/new_relic/agent/utilization/gcp.rb +1 -1
  280. data/lib/new_relic/agent/utilization/pcf.rb +1 -1
  281. data/lib/new_relic/agent/utilization/vendor.rb +1 -1
  282. data/lib/new_relic/agent/utilization_data.rb +37 -2
  283. data/lib/new_relic/agent/vm.rb +1 -1
  284. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  285. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  286. data/lib/new_relic/agent/vm/mri_vm.rb +7 -5
  287. data/lib/new_relic/agent/vm/snapshot.rb +1 -1
  288. data/lib/new_relic/agent/worker_loop.rb +1 -1
  289. data/lib/new_relic/cli/command.rb +1 -1
  290. data/lib/new_relic/cli/commands/deployments.rb +2 -3
  291. data/lib/new_relic/cli/commands/install.rb +4 -3
  292. data/lib/new_relic/coerce.rb +32 -7
  293. data/lib/new_relic/collection_helper.rb +1 -1
  294. data/lib/new_relic/constants.rb +42 -0
  295. data/lib/new_relic/control.rb +1 -1
  296. data/lib/new_relic/control/class_methods.rb +8 -2
  297. data/lib/new_relic/control/frameworks.rb +1 -1
  298. data/lib/new_relic/control/frameworks/external.rb +1 -1
  299. data/lib/new_relic/control/frameworks/merb.rb +1 -1
  300. data/lib/new_relic/control/frameworks/rails.rb +12 -10
  301. data/lib/new_relic/control/frameworks/rails3.rb +1 -1
  302. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  303. data/lib/new_relic/control/frameworks/{rails5.rb → rails_notifications.rb} +2 -2
  304. data/lib/new_relic/control/frameworks/ruby.rb +1 -1
  305. data/lib/new_relic/control/frameworks/sinatra.rb +1 -1
  306. data/lib/new_relic/control/instance_methods.rb +12 -2
  307. data/lib/new_relic/control/instrumentation.rb +1 -1
  308. data/lib/new_relic/control/server_methods.rb +1 -1
  309. data/lib/new_relic/delayed_job_injection.rb +1 -1
  310. data/lib/new_relic/dependency_detection.rb +124 -14
  311. data/lib/new_relic/environment_report.rb +2 -4
  312. data/lib/new_relic/helper.rb +1 -1
  313. data/lib/new_relic/language_support.rb +1 -1
  314. data/lib/new_relic/latest_changes.rb +4 -4
  315. data/lib/new_relic/local_environment.rb +1 -1
  316. data/lib/new_relic/metric_data.rb +1 -1
  317. data/lib/new_relic/metric_spec.rb +1 -1
  318. data/lib/new_relic/noticed_error.rb +38 -21
  319. data/lib/new_relic/rack.rb +1 -1
  320. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  321. data/lib/new_relic/rack/agent_middleware.rb +2 -2
  322. data/lib/new_relic/rack/browser_monitoring.rb +16 -9
  323. data/lib/new_relic/recipes.rb +1 -1
  324. data/lib/new_relic/recipes/capistrano3.rb +1 -1
  325. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -1
  326. data/lib/new_relic/supportability_helper.rb +16 -1
  327. data/lib/new_relic/version.rb +3 -3
  328. data/lib/newrelic_rpm.rb +1 -1
  329. data/lib/sequel/extensions/newrelic_instrumentation.rb +1 -1
  330. data/lib/sequel/plugins/newrelic_instrumentation.rb +1 -1
  331. data/lib/tasks/all.rb +1 -1
  332. data/lib/tasks/config.html.erb +14 -25
  333. data/lib/tasks/config.rake +9 -9
  334. data/lib/tasks/multiverse.rb +35 -1
  335. data/lib/tasks/newrelic.rb +1 -1
  336. data/lib/tasks/tests.rake +6 -1
  337. data/newrelic_rpm.gemspec +22 -17
  338. data/recipes/newrelic.rb +1 -1
  339. data/test/agent_helper.rb +358 -78
  340. metadata +151 -66
  341. data/.travis.yml +0 -201
  342. data/cert/cacert.pem +0 -1177
  343. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  344. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  345. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  346. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -41
  347. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  348. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -42
  349. data/lib/new_relic/agent/instrumentation/active_record_5.rb +0 -41
  350. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -104
  351. data/lib/new_relic/agent/instrumentation/http.rb +0 -46
  352. data/lib/new_relic/agent/instrumentation/net.rb +0 -50
  353. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -32
  354. data/lib/new_relic/agent/instrumentation/rails5/action_view.rb +0 -27
  355. data/lib/new_relic/agent/transaction/attributes.rb +0 -154
  356. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  357. data/lib/new_relic/agent/transaction_state.rb +0 -186
  358. data/lib/new_relic/build.rb +0 -2
  359. data/lib/new_relic/metrics.rb +0 -13
  360. data/lib/tasks/versions.html.erb +0 -28
  361. data/lib/tasks/versions.postface.html +0 -8
  362. data/lib/tasks/versions.preface.html +0 -9
  363. data/lib/tasks/versions.rake +0 -65
  364. data/lib/tasks/versions.txt.erb +0 -14
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  # @api public
6
6
  module NewRelic
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  require 'new_relic/agent/event_listener'
6
6
  require 'new_relic/rack/agent_middleware'
@@ -1,8 +1,8 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
- require 'new_relic/agent/transaction_state'
5
+ require 'new_relic/agent/tracer'
6
6
  require 'new_relic/agent/instrumentation/controller_instrumentation'
7
7
  require 'new_relic/agent/instrumentation/middleware_tracing'
8
8
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  require 'rack'
6
6
  require 'new_relic/rack/agent_middleware'
@@ -21,6 +21,7 @@ module NewRelic::Rack
21
21
 
22
22
  CONTENT_TYPE = 'Content-Type'.freeze
23
23
  CONTENT_DISPOSITION = 'Content-Disposition'.freeze
24
+ CONTENT_LENGTH = 'Content-Length'.freeze
24
25
  ATTACHMENT = 'attachment'.freeze
25
26
  TEXT_HTML = 'text/html'.freeze
26
27
 
@@ -29,15 +30,20 @@ module NewRelic::Rack
29
30
  GT = ">".freeze
30
31
 
31
32
  def traced_call(env)
32
- result = @app.call(env) # [status, headers, response]
33
+ result = @app.call(env)
34
+ (status, headers, response) = result
33
35
 
34
36
  js_to_inject = NewRelic::Agent.browser_timing_header
35
- if (js_to_inject != "") && should_instrument?(env, result[0], result[1])
36
- response_string = autoinstrument_source(result[2], result[1], js_to_inject)
37
+ if (js_to_inject != "") && should_instrument?(env, status, headers)
38
+ response_string = autoinstrument_source(response, headers, js_to_inject)
39
+ if headers.key?(CONTENT_LENGTH)
40
+ content_length = response_string ? response_string.bytesize : 0
41
+ headers[CONTENT_LENGTH] = content_length.to_s
42
+ end
37
43
 
38
44
  env[ALREADY_INSTRUMENTED_KEY] = true
39
45
  if response_string
40
- response = Rack::Response.new(response_string, result[0], result[1])
46
+ response = Rack::Response.new(response_string, status, headers)
41
47
  response.finish
42
48
  else
43
49
  result
@@ -55,7 +61,7 @@ module NewRelic::Rack
55
61
  !env[ALREADY_INSTRUMENTED_KEY] &&
56
62
  is_html?(headers) &&
57
63
  !is_attachment?(headers) &&
58
- !is_streaming?(env)
64
+ !is_streaming?(env, headers)
59
65
  end
60
66
 
61
67
  def is_html?(headers)
@@ -66,10 +72,11 @@ module NewRelic::Rack
66
72
  headers[CONTENT_DISPOSITION] && headers[CONTENT_DISPOSITION].include?(ATTACHMENT)
67
73
  end
68
74
 
69
- def is_streaming?(env)
70
- return false unless defined?(ActionController::Live)
75
+ def is_streaming?(env, headers)
76
+ return true if headers && headers['Transfer-Encoding'] == 'chunked'
71
77
 
72
- env['action_controller.instance'].class.included_modules.include?(ActionController::Live)
78
+ defined?(ActionController::Live) &&
79
+ env['action_controller.instance'].class.included_modules.include?(ActionController::Live)
73
80
  end
74
81
 
75
82
  CHARSET_RE = /<\s*meta[^>]+charset\s*=[^>]*>/im.freeze
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  # When installed as a plugin, this is loaded automatically.
6
6
  #
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  require 'capistrano/framework'
6
6
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  make_notify_task = Proc.new do
6
6
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  module NewRelic
6
6
  module SupportabilityHelper
@@ -11,7 +11,10 @@ module NewRelic
11
11
  # transaction, just to eke out a bit less performance hit
12
12
  #
13
13
  API_SUPPORTABILITY_METRICS = [
14
+ :insert_distributed_trace_headers,
15
+ :accept_distributed_trace_headers,
14
16
  :add_custom_attributes,
17
+ :add_custom_span_attributes,
15
18
  :add_instrumentation,
16
19
  :add_method_tracer,
17
20
  :add_transaction_tracer,
@@ -64,5 +67,17 @@ module NewRelic
64
67
  NewRelic::Agent.logger.debug "API supportability metric not found for :#{method_name}"
65
68
  end
66
69
  end
70
+
71
+ def valid_api_argument_class? arg, name, klass
72
+ return true if arg.is_a?(klass)
73
+
74
+ caller_location = caller_locations.first.label
75
+
76
+ message = "Bad argument passed to ##{caller_location}. " \
77
+ "Expected #{klass} for `#{name}` but got #{arg.class}"
78
+
79
+ NewRelic::Agent.logger.warn message
80
+ nil
81
+ end
67
82
  end
68
83
  end
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/ruby
2
2
  # encoding: utf-8
3
3
  # This file is distributed under New Relic's license terms.
4
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
5
5
 
6
6
 
7
7
  module NewRelic
@@ -10,8 +10,8 @@ module NewRelic
10
10
  parts.compact.join('.')
11
11
  end
12
12
 
13
- MAJOR = 5
14
- MINOR = 5
13
+ MAJOR = 7
14
+ MINOR = 2
15
15
  TINY = 0
16
16
 
17
17
  begin
data/lib/newrelic_rpm.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  # == New Relic Initialization
6
6
  #
@@ -1,7 +1,7 @@
1
1
  # -*- ruby -*-
2
2
  # encoding: utf-8
3
3
  # This file is distributed under New Relic's license terms.
4
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
5
5
 
6
6
  require 'sequel' unless defined?( Sequel )
7
7
  require 'newrelic_rpm' unless defined?( NewRelic )
@@ -1,7 +1,7 @@
1
1
  # -*- ruby -*-
2
2
  # encoding: utf-8
3
3
  # This file is distributed under New Relic's license terms.
4
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
5
5
 
6
6
  require 'sequel' unless defined?( Sequel )
7
7
  require 'newrelic_rpm' unless defined?( NewRelic )
data/lib/tasks/all.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
5
  # This is required to load in task definitions from merb
6
6
  Dir.glob(File.join(File.dirname(__FILE__),'*.rake')) do |file|
@@ -1,32 +1,21 @@
1
1
  <% sections.each do |(section_key, section_name, section_description, configs)| %>
2
- <h2 id="<%=section_key%>"><%=section_name%></h2>
2
+ ## <%=section_name%>
3
3
 
4
- <%= "<p>#{section_description}</p>" unless section_description.nil? %>
4
+ <%= "#{section_description}" unless section_description.nil? %>
5
5
 
6
- <dl class="clamshell-list">
6
+ <CollapserGroup>
7
7
  <% configs.each do |config|%>
8
- <!-- ********** <%= config[:key] %> ********** -->
9
- <dt id="<%= config[:key].gsub('.', '-') %>"><%=config[:key]%></dt>
10
- <dd>
11
- <table class="specs">
12
- <tbody>
13
- <tr>
14
- <th>Type</th>
15
- <td><%=config[:type]%></td>
16
- </tr>
17
- <tr>
18
- <th>Default</th>
19
- <td><%=config[:default]%></td>
20
- </tr>
21
- <tr>
22
- <th>Environ variable</th>
23
- <td><code><%=config[:env_var]%></code></td>
24
- </tr>
25
- </tbody>
26
- </table>
8
+ <Collapser id="<%= config[:key].gsub('.', '-') %>" title="<%=config[:key]%>">
9
+ <table>
10
+ <tbody>
11
+ <tr><th>Type</th><td><%=config[:type]%></td></tr>
12
+ <tr><th>Default</th><td>`<%=config[:default]%>`</td></tr>
13
+ <tr><th>Environ variable</th><td>`<%=config[:env_var]%>`</td></tr>
14
+ </tbody>
15
+ </table>
27
16
 
28
- <p><%=config[:description]%></p>
29
- </dd>
17
+ <%=config[:description]%>
18
+ </Collapser>
30
19
  <% end %>
31
- </dl>
20
+ </CollapserGroup>
32
21
  <% end %>
@@ -9,16 +9,15 @@ namespace :newrelic do
9
9
  SECTION_DESCRIPTIONS = {
10
10
  GENERAL => 'These settings are available for agent configuration. Some settings depend on your New Relic subscription level.',
11
11
  DISABLING => 'Use these settings to toggle instrumentation types during agent startup.',
12
- ATTRIBUTES => '<a href="https://docs.newrelic.com/docs/features/agent-attributes">Attributes</a> are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in New Relic APM, traced errors in New Relic APM, transaction events in Insights, and page views in Insights. You can customize exactly which attributes will be sent to each of these destinations.',
13
- "transaction_tracer" => 'The <a href="/docs/apm/traces/transaction-traces/transaction-traces">transaction traces</a> feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
12
+ ATTRIBUTES => '[Attributes](/docs/features/agent-attributes) are key-value pairs containing information that determines the properties of an event or transaction. These key-value pairs can be viewed within transaction traces in APM, traced errors in APM, transaction events in dashboards, and page views in dashboards. You can customize exactly which attributes will be sent to each of these destinations',
13
+ "transaction_tracer" => 'The [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces) feature collects detailed information from a selection of transactions, including a summary of the calling sequence, a breakdown of time spent, and a list of SQL queries and their query plans (on mysql and postgresql). Available features depend on your New Relic subscription level.',
14
14
  "error_collector" => 'The agent collects and reports all uncaught exceptions by default. These configuration options allow you to customize the error collection.',
15
- "browser_monitoring" => 'New Relic Browser\'s <a href="/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process">page load timing</a> feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users\' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.',
16
- "analytics_events" => '<a href="/docs/insights/new-relic-insights/understanding-insights/new-relic-insights">New Relic Insights</a> is a software analytics resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.'
15
+ "browser_monitoring" => 'The Browser monitoring [page load timing](/docs/browser/new-relic-browser/page-load-timing/page-load-timing-process) feature (sometimes referred to as real user monitoring or RUM) gives you insight into the performance real users are experiencing with your website. This is accomplished by measuring the time it takes for your users\' browsers to download and render your web pages by injecting a small amount of JavaScript code into the header and footer of each page.',
16
+ "analytics_events" => '[New Relic dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-new-relic-one-dashboards) is a resource to gather and visualize data about your software and what it says about your business. With it you can quickly and easily create real-time dashboards to get immediate answers about end-user experiences, clickstreams, mobile activities, and server transactions.'
17
17
  }
18
18
 
19
19
  NAME_OVERRIDES = {
20
- "slow_sql" => "Slow SQL",
21
- "xray_session" => "X-Ray Session"
20
+ "slow_sql" => "Slow SQL"
22
21
  }
23
22
 
24
23
  def output(format)
@@ -97,8 +96,9 @@ namespace :newrelic do
97
96
  end
98
97
 
99
98
  def format_description(value)
100
- description = value[:description]
101
- description = "<b>DEPRECATED</b> #{description}" if value[:deprecated]
99
+ description = ''
100
+ description += "<b>DEPRECATED</b> " if value[:deprecated]
101
+ description += value[:description]
102
102
  description
103
103
  end
104
104
 
@@ -106,7 +106,7 @@ namespace :newrelic do
106
106
  if spec[:default].is_a?(Proc)
107
107
  '(Dynamic)'
108
108
  else
109
- "<code>#{spec[:default].inspect}</code>"
109
+ "#{spec[:default].inspect}"
110
110
  end
111
111
  end
112
112
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
  #
5
5
  # Rake task for running Ruby agent multiverse tests. This file may be required
6
6
  # from third party gems. It is also used by the agent itself to run multiverse.
@@ -43,11 +43,45 @@ namespace :test do
43
43
 
44
44
  namespace :multiverse do
45
45
 
46
+ def remove_local_multiverse_databases
47
+ list_databases_command = %{echo "show databases" | mysql -u root}
48
+ databases = `#{list_databases_command}`.chomp!.split("\n").select{|s| s =~ /multiverse/}
49
+ databases.each do |database|
50
+ puts "Dropping #{database}"
51
+ `echo "drop database #{database}" | mysql -u root`
52
+ end
53
+ rescue => error
54
+ puts "ERROR: Cannot get MySQL databases..."
55
+ puts error.message
56
+ end
57
+
58
+ def remove_generated_gemfiles
59
+ file_path = File.expand_path "test/multiverse/suites"
60
+ Dir.glob(File.join file_path, "**", "Gemfile*").each do |fn|
61
+ puts "Removing #{fn.gsub(file_path,'.../suites')}"
62
+ FileUtils.rm fn
63
+ end
64
+ end
65
+
66
+ def remove_generated_gemfile_lockfiles
67
+ file_path = File.expand_path "test/environments"
68
+ Dir.glob(File.join file_path, "**", "Gemfile.lock").each do |fn|
69
+ puts "Removing #{fn.gsub(file_path,'.../environments')}"
70
+ FileUtils.rm fn
71
+ end
72
+ end
73
+
46
74
  task :env do
47
75
  # ENV['SUITES_DIRECTORY'] = File.expand_path('../../test/multiverse/suites', __FILE__)
48
76
  require File.expand_path('../../../test/multiverse/lib/multiverse', __FILE__)
49
77
  end
50
78
 
79
+ task :clobber do
80
+ remove_local_multiverse_databases
81
+ remove_generated_gemfiles
82
+ remove_generated_gemfile_lockfiles
83
+ end
84
+
51
85
  desc "Clean cached gemfiles from Bundler.bundle_path"
52
86
  task :clean_gemfile_cache do
53
87
  glob = File.expand_path 'multiverse-cache/Gemfile.*.lock', Bundler.bundle_path
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
  #
5
5
  # If you are looking to instrument rake tasks in a Rails environment, but the
6
6
  # task doesn't depend on :environment, this task may be included to ensure that
data/lib/tasks/tests.rake CHANGED
@@ -26,9 +26,14 @@ if defined? Rake::TestTask
26
26
  agent_home = File.expand_path(File.join(File.dirname(__FILE__),'..','..'))
27
27
 
28
28
  Rake::TestTask.new(:newrelic) do |t|
29
+
30
+ file_pattern = ENV["file"]
31
+ file_pattern = file_pattern.split(",").map{|f| "#{agent_home}/#{f}".gsub("//", "/")} if file_pattern
32
+ file_pattern ||= "#{agent_home}/test/new_relic/**/*_test.rb"
33
+
29
34
  t.libs << "#{agent_home}/test"
30
35
  t.libs << "#{agent_home}/lib"
31
- t.pattern = "#{agent_home}/test/new_relic/**/*_test.rb"
36
+ t.pattern = Array(file_pattern)
32
37
  t.verbose = true
33
38
  end
34
39
 
data/newrelic_rpm.gemspec CHANGED
@@ -10,16 +10,16 @@ Gem::Specification.new do |s|
10
10
  s.version = NewRelic::VERSION::STRING
11
11
  s.required_ruby_version = '>= 2.0.0'
12
12
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
13
- s.authors = [ "Matthew Wear", "Chris Pine", "Erin Dees", "Rachel Klein" ]
13
+ s.authors = [ "Aaron Huntsman", "Tanna McClure", "Michael Lang" ]
14
14
  s.date = Time.now.strftime('%Y-%m-%d')
15
- s.licenses = ['New Relic']
15
+ s.licenses = ['Apache-2.0']
16
16
  s.description = <<-EOS
17
17
  New Relic is a performance management system, developed by New Relic,
18
18
  Inc (http://www.newrelic.com). New Relic provides you with deep
19
19
  information about the performance of your web application as it runs
20
- in production. The New Relic Ruby Agent is dual-purposed as a either a
20
+ in production. The New Relic Ruby agent is dual-purposed as a either a
21
21
  Gem or plugin, hosted on
22
- https://github.com/newrelic/rpm/
22
+ https://github.com/newrelic/newrelic-ruby-agent/
23
23
  EOS
24
24
  s.email = "support@newrelic.com"
25
25
  s.executables = [ "mongrel_rpm", "newrelic_cmd", "newrelic", "nrdebug" ]
@@ -31,7 +31,15 @@ EOS
31
31
  "newrelic.yml"
32
32
  ]
33
33
 
34
- file_list = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/(?!agent_helper.rb)}) }
34
+ s.metadata = {
35
+ 'bug_tracker_uri' => 'https://github.com/newrelic/newrelic-ruby-agent/issues',
36
+ 'changelog_uri' => 'https://github.com/newrelic/newrelic-ruby-agent/blob/main/CHANGELOG.md',
37
+ 'documentation_uri' => 'https://docs.newrelic.com/docs/agents/ruby-agent',
38
+ 'source_code_uri' => 'https://github.com/newrelic/newrelic-ruby-agent',
39
+ "homepage_uri" => "https://newrelic.com/ruby",
40
+ }
41
+
42
+ file_list = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|infinite_tracing|\.github)/(?!agent_helper.rb)}) }
35
43
  build_file_path = 'lib/new_relic/build.rb'
36
44
  file_list << build_file_path if File.exist?(build_file_path)
37
45
  s.files = file_list
@@ -41,19 +49,16 @@ EOS
41
49
  s.rubygems_version = Gem::VERSION
42
50
  s.summary = "New Relic Ruby Agent"
43
51
 
44
- s.add_development_dependency 'rake', '10.1.0'
45
- s.add_development_dependency 'minitest', '~> 4.7.5'
46
- s.add_development_dependency 'mocha', '~> 0.13.0'
52
+ s.add_development_dependency 'rake', '12.3.3'
53
+ s.add_development_dependency 'rb-inotify', '0.9.10' # locked to support < Ruby 2.3 (and listen 3.0.8)
54
+ s.add_development_dependency 'listen', '3.0.8' # locked to support < Ruby 2.3
55
+ s.add_development_dependency 'minitest', '4.7.5'
56
+ s.add_development_dependency 'mocha', '~> 1.9.0'
47
57
  s.add_development_dependency 'yard'
48
- s.add_development_dependency 'rails', '~> 3.2.13'
49
- s.add_development_dependency 'json', '>= 2.0.2' if RUBY_VERSION >= '2.4.0' # possible bundler issue?
50
- s.add_development_dependency 'pry-nav', '~> 0.2.4'
58
+ s.add_development_dependency 'pry-nav', '~> 0.3.0'
51
59
  s.add_development_dependency 'pry-stack_explorer', '~> 0.4.9'
60
+ s.add_development_dependency 'guard', '~> 2.16.0'
61
+ s.add_development_dependency 'guard-minitest', '~> 2.4.0'
52
62
  s.add_development_dependency 'hometown', '~> 0.2.5'
53
-
54
- if RUBY_PLATFORM == 'java'
55
- s.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
56
- else
57
- s.add_development_dependency 'sqlite3'
58
- end
63
+ s.add_development_dependency 'bundler'
59
64
  end