newrelic_rpm 6.3.0.355 → 9.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (468) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +15 -1
  3. data/.rubocop.yml +1845 -0
  4. data/.rubocop_todo.yml +61 -0
  5. data/.simplecov +16 -0
  6. data/.snyk +11 -0
  7. data/.yardopts +1 -0
  8. data/Brewfile +13 -0
  9. data/CHANGELOG.md +4102 -2416
  10. data/CONTRIBUTING.md +132 -19
  11. data/DOCKER.md +167 -0
  12. data/Dockerfile +10 -0
  13. data/Gemfile +5 -2
  14. data/Guardfile +25 -6
  15. data/LICENSE +202 -38
  16. data/README.md +86 -87
  17. data/Rakefile +32 -32
  18. data/THIRD_PARTY_NOTICES.md +28 -0
  19. data/Thorfile +5 -0
  20. data/bin/newrelic +4 -2
  21. data/bin/newrelic_cmd +2 -0
  22. data/bin/nrdebug +86 -63
  23. data/config.dot +5 -5
  24. data/docker-compose.yml +107 -0
  25. data/init.rb +5 -7
  26. data/install.rb +3 -3
  27. data/lefthook.yml +9 -0
  28. data/lib/new_relic/agent/adaptive_sampler.rb +14 -10
  29. data/lib/new_relic/agent/agent.rb +115 -882
  30. data/lib/new_relic/agent/agent_helpers/connect.rb +222 -0
  31. data/lib/new_relic/agent/agent_helpers/harvest.rb +153 -0
  32. data/lib/new_relic/agent/agent_helpers/shutdown.rb +72 -0
  33. data/lib/new_relic/agent/agent_helpers/special_startup.rb +74 -0
  34. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +175 -0
  35. data/lib/new_relic/agent/agent_helpers/startup.rb +202 -0
  36. data/lib/new_relic/agent/agent_helpers/transmit.rb +76 -0
  37. data/lib/new_relic/agent/agent_logger.rb +30 -22
  38. data/lib/new_relic/agent/attribute_filter.rb +70 -53
  39. data/lib/new_relic/agent/attribute_processing.rb +10 -10
  40. data/lib/new_relic/agent/attributes.rb +153 -0
  41. data/lib/new_relic/agent/audit_logger.rb +22 -7
  42. data/lib/new_relic/agent/autostart.rb +34 -28
  43. data/lib/new_relic/agent/chained_call.rb +2 -2
  44. data/lib/new_relic/agent/commands/agent_command.rb +5 -5
  45. data/lib/new_relic/agent/commands/agent_command_router.rb +18 -35
  46. data/lib/new_relic/agent/commands/thread_profiler_session.rb +17 -15
  47. data/lib/new_relic/agent/configuration/default_source.rb +1456 -1100
  48. data/lib/new_relic/agent/configuration/dotted_hash.rb +7 -6
  49. data/lib/new_relic/agent/configuration/environment_source.rb +17 -13
  50. data/lib/new_relic/agent/configuration/event_harvest_config.rb +68 -0
  51. data/lib/new_relic/agent/configuration/high_security_source.rb +12 -12
  52. data/lib/new_relic/agent/configuration/manager.rb +97 -80
  53. data/lib/new_relic/agent/configuration/manual_source.rb +2 -2
  54. data/lib/new_relic/agent/configuration/mask_defaults.rb +4 -4
  55. data/lib/new_relic/agent/configuration/security_policy_source.rb +93 -96
  56. data/lib/new_relic/agent/configuration/server_source.rb +66 -40
  57. data/lib/new_relic/agent/configuration/yaml_source.rb +44 -15
  58. data/lib/new_relic/agent/configuration.rb +2 -2
  59. data/lib/new_relic/agent/connect/request_builder.rb +25 -27
  60. data/lib/new_relic/agent/connect/response_handler.rb +7 -10
  61. data/lib/new_relic/agent/custom_event_aggregator.rb +16 -16
  62. data/lib/new_relic/agent/database/explain_plan_helpers.rb +6 -7
  63. data/lib/new_relic/agent/database/obfuscation_helpers.rb +18 -17
  64. data/lib/new_relic/agent/database/obfuscator.rb +5 -5
  65. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +4 -4
  66. data/lib/new_relic/agent/database.rb +47 -56
  67. data/lib/new_relic/agent/database_adapter.rb +35 -0
  68. data/lib/new_relic/agent/datastores/metric_helper.rb +22 -23
  69. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +9 -8
  70. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +18 -22
  71. data/lib/new_relic/agent/datastores/mongo.rb +7 -12
  72. data/lib/new_relic/agent/datastores/nosql_obfuscator.rb +41 -0
  73. data/lib/new_relic/agent/datastores/redis.rb +10 -16
  74. data/lib/new_relic/agent/datastores.rb +14 -16
  75. data/lib/new_relic/agent/deprecator.rb +2 -2
  76. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +13 -12
  77. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +90 -70
  78. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  79. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  80. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +163 -0
  81. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +38 -0
  82. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +245 -0
  83. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +127 -0
  84. data/lib/new_relic/agent/distributed_tracing.rb +113 -32
  85. data/lib/new_relic/agent/encoding_normalizer.rb +5 -3
  86. data/lib/new_relic/agent/error_collector.rb +129 -65
  87. data/lib/new_relic/agent/error_event_aggregator.rb +10 -8
  88. data/lib/new_relic/agent/error_filter.rb +174 -0
  89. data/lib/new_relic/agent/error_trace_aggregator.rb +11 -8
  90. data/lib/new_relic/agent/event_aggregator.rb +43 -48
  91. data/lib/new_relic/agent/event_buffer.rb +8 -9
  92. data/lib/new_relic/agent/event_listener.rb +2 -3
  93. data/lib/new_relic/agent/event_loop.rb +28 -26
  94. data/lib/new_relic/agent/external.rb +19 -52
  95. data/lib/new_relic/agent/guid_generator.rb +30 -0
  96. data/lib/new_relic/agent/harvester.rb +6 -9
  97. data/lib/new_relic/agent/heap.rb +9 -10
  98. data/lib/new_relic/agent/hostname.rb +22 -9
  99. data/lib/new_relic/agent/http_clients/abstract.rb +69 -0
  100. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +30 -26
  101. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +37 -21
  102. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +22 -23
  103. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +18 -17
  104. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +28 -8
  105. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +17 -17
  106. data/lib/new_relic/agent/http_clients/uri_util.rb +13 -14
  107. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +22 -55
  108. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +42 -0
  109. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +60 -72
  110. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +31 -0
  111. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +64 -0
  112. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +30 -0
  113. data/lib/new_relic/agent/instrumentation/action_mailbox_subscriber.rb +33 -0
  114. data/lib/new_relic/agent/instrumentation/action_mailer.rb +30 -0
  115. data/lib/new_relic/agent/instrumentation/action_mailer_subscriber.rb +85 -0
  116. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +86 -62
  117. data/lib/new_relic/agent/instrumentation/active_job.rb +34 -14
  118. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +41 -0
  119. data/lib/new_relic/agent/instrumentation/active_merchant.rb +21 -7
  120. data/lib/new_relic/agent/instrumentation/active_record.rb +97 -47
  121. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +97 -73
  122. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +70 -76
  123. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +36 -12
  124. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +65 -66
  125. data/lib/new_relic/agent/instrumentation/active_storage.rb +8 -4
  126. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +11 -32
  127. data/lib/new_relic/agent/instrumentation/active_support.rb +27 -0
  128. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +23 -0
  129. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +20 -0
  130. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +12 -0
  131. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +24 -0
  132. data/lib/new_relic/agent/instrumentation/active_support_subscriber.rb +41 -0
  133. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  134. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +150 -0
  135. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  136. data/lib/new_relic/agent/instrumentation/bunny.rb +14 -138
  137. data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +36 -0
  138. data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +21 -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 +75 -63
  142. data/lib/new_relic/agent/instrumentation/curb/chain.rb +91 -0
  143. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +221 -0
  144. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +61 -0
  145. data/lib/new_relic/agent/instrumentation/curb.rb +16 -201
  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 +48 -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 +31 -52
  152. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +29 -0
  153. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +67 -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/excon/middleware.rb +10 -8
  157. data/lib/new_relic/agent/instrumentation/excon.rb +29 -31
  158. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +20 -0
  159. data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +24 -0
  160. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +18 -0
  161. data/lib/new_relic/agent/instrumentation/fiber.rb +25 -0
  162. data/lib/new_relic/agent/instrumentation/grape/chain.rb +24 -0
  163. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  164. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  165. data/lib/new_relic/agent/instrumentation/grape.rb +17 -124
  166. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +97 -0
  167. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +90 -0
  168. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +111 -0
  169. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +30 -0
  170. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +32 -0
  171. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +69 -0
  172. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +134 -0
  173. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +35 -0
  174. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +26 -0
  175. data/lib/new_relic/agent/instrumentation/grpc_client.rb +23 -0
  176. data/lib/new_relic/agent/instrumentation/grpc_server.rb +25 -0
  177. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +24 -0
  178. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +37 -0
  179. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +15 -0
  180. data/lib/new_relic/agent/instrumentation/httpclient.rb +12 -32
  181. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  182. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  183. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  184. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  185. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +6 -7
  186. data/lib/new_relic/agent/instrumentation/logger/chain.rb +21 -0
  187. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +66 -0
  188. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +13 -0
  189. data/lib/new_relic/agent/instrumentation/logger.rb +26 -0
  190. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +15 -0
  191. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +60 -125
  192. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +59 -0
  193. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +90 -0
  194. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +103 -0
  195. data/lib/new_relic/agent/instrumentation/memcache.rb +57 -71
  196. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +16 -15
  197. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +11 -11
  198. data/lib/new_relic/agent/instrumentation/mongo.rb +7 -132
  199. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +53 -17
  200. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +24 -0
  201. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  202. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  203. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  204. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +142 -0
  205. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +38 -0
  206. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +28 -0
  207. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  208. data/lib/new_relic/agent/instrumentation/padrino.rb +22 -58
  209. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +7 -7
  210. data/lib/new_relic/agent/instrumentation/queue_time.rb +9 -10
  211. data/lib/new_relic/agent/instrumentation/rack/chain.rb +66 -0
  212. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +33 -0
  213. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +75 -0
  214. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +43 -0
  215. data/lib/new_relic/agent/instrumentation/rack.rb +33 -141
  216. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +22 -57
  217. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +5 -5
  218. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +10 -10
  219. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +18 -6
  220. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +9 -6
  221. data/lib/new_relic/agent/instrumentation/rails_notifications/custom_events.rb +30 -0
  222. data/lib/new_relic/agent/instrumentation/rake/chain.rb +20 -0
  223. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +142 -0
  224. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  225. data/lib/new_relic/agent/instrumentation/rake.rb +18 -158
  226. data/lib/new_relic/agent/instrumentation/redis/chain.rb +45 -0
  227. data/lib/new_relic/agent/instrumentation/redis/constants.rb +17 -0
  228. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +94 -0
  229. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +16 -0
  230. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +29 -0
  231. data/lib/new_relic/agent/instrumentation/redis.rb +20 -103
  232. data/lib/new_relic/agent/instrumentation/resque/chain.rb +21 -0
  233. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  234. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +34 -0
  235. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +15 -0
  236. data/lib/new_relic/agent/instrumentation/resque.rb +33 -41
  237. data/lib/new_relic/agent/instrumentation/sequel.rb +17 -20
  238. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +13 -13
  239. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +20 -0
  240. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +30 -0
  241. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +37 -0
  242. data/lib/new_relic/agent/instrumentation/sidekiq.rb +30 -46
  243. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  244. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +31 -37
  245. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +126 -0
  246. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  247. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +4 -4
  248. data/lib/new_relic/agent/instrumentation/sinatra.rb +35 -165
  249. data/lib/new_relic/agent/instrumentation/thread/chain.rb +24 -0
  250. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +28 -0
  251. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +22 -0
  252. data/lib/new_relic/agent/instrumentation/thread.rb +20 -0
  253. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +24 -0
  254. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +42 -0
  255. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +13 -0
  256. data/lib/new_relic/agent/instrumentation/tilt.rb +25 -0
  257. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  258. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +80 -0
  259. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  260. data/lib/new_relic/agent/instrumentation/typhoeus.rb +14 -76
  261. data/lib/new_relic/agent/instrumentation.rb +2 -2
  262. data/lib/new_relic/agent/internal_agent_error.rb +3 -3
  263. data/lib/new_relic/agent/javascript_instrumentor.rb +60 -49
  264. data/lib/new_relic/agent/linking_metadata.rb +44 -0
  265. data/lib/new_relic/agent/local_log_decorator.rb +37 -0
  266. data/lib/new_relic/agent/log_event_aggregator.rb +235 -0
  267. data/lib/new_relic/agent/log_once.rb +2 -2
  268. data/lib/new_relic/agent/log_priority.rb +20 -0
  269. data/lib/new_relic/agent/logging.rb +182 -0
  270. data/lib/new_relic/agent/memory_logger.rb +3 -3
  271. data/lib/new_relic/agent/messaging.rb +74 -156
  272. data/lib/new_relic/agent/method_tracer.rb +157 -150
  273. data/lib/new_relic/agent/method_tracer_helpers.rb +89 -12
  274. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +117 -0
  275. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +28 -0
  276. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +5 -6
  277. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +8 -13
  278. data/lib/new_relic/agent/monitors.rb +26 -0
  279. data/lib/new_relic/agent/new_relic_service/encoders.rb +8 -8
  280. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +7 -7
  281. data/lib/new_relic/agent/new_relic_service/marshaller.rb +3 -3
  282. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +5 -5
  283. data/lib/new_relic/agent/new_relic_service.rb +273 -202
  284. data/lib/new_relic/agent/noticeable_error.rb +19 -0
  285. data/lib/new_relic/agent/null_logger.rb +8 -4
  286. data/lib/new_relic/agent/obfuscator.rb +9 -11
  287. data/lib/new_relic/agent/parameter_filtering.rb +30 -16
  288. data/lib/new_relic/agent/payload_metric_mapping.rb +10 -11
  289. data/lib/new_relic/agent/pipe_channel_manager.rb +34 -23
  290. data/lib/new_relic/agent/pipe_service.rb +14 -9
  291. data/lib/new_relic/agent/prepend_supportability.rb +3 -3
  292. data/lib/new_relic/agent/priority_sampled_buffer.rb +17 -15
  293. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +12 -12
  294. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +13 -14
  295. data/lib/new_relic/agent/rules_engine.rb +6 -5
  296. data/lib/new_relic/agent/sampler.rb +6 -6
  297. data/lib/new_relic/agent/sampler_collection.rb +5 -6
  298. data/lib/new_relic/agent/samplers/cpu_sampler.rb +9 -8
  299. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +21 -18
  300. data/lib/new_relic/agent/samplers/memory_sampler.rb +33 -22
  301. data/lib/new_relic/agent/samplers/object_sampler.rb +3 -3
  302. data/lib/new_relic/agent/samplers/vm_sampler.rb +22 -20
  303. data/lib/new_relic/agent/span_event_aggregator.rb +17 -19
  304. data/lib/new_relic/agent/span_event_primitive.rb +118 -58
  305. data/lib/new_relic/agent/sql_sampler.rb +23 -23
  306. data/lib/new_relic/agent/stats.rb +80 -43
  307. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +11 -13
  308. data/lib/new_relic/agent/stats_engine/stats_hash.rb +13 -14
  309. data/lib/new_relic/agent/stats_engine.rb +9 -9
  310. data/lib/new_relic/agent/synthetics_event_aggregator.rb +9 -10
  311. data/lib/new_relic/agent/system_info.rb +97 -68
  312. data/lib/new_relic/agent/threading/agent_thread.rb +19 -15
  313. data/lib/new_relic/agent/threading/backtrace_node.rb +13 -14
  314. data/lib/new_relic/agent/threading/backtrace_service.rb +21 -25
  315. data/lib/new_relic/agent/threading/thread_profile.rb +32 -46
  316. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +3 -3
  317. data/lib/new_relic/agent/tracer.rb +159 -107
  318. data/lib/new_relic/agent/transaction/abstract_segment.rb +147 -51
  319. data/lib/new_relic/agent/transaction/datastore_segment.rb +23 -19
  320. data/lib/new_relic/agent/transaction/distributed_tracer.rb +185 -0
  321. data/lib/new_relic/agent/transaction/distributed_tracing.rb +73 -164
  322. data/lib/new_relic/agent/transaction/external_request_segment.rb +67 -64
  323. data/lib/new_relic/agent/transaction/message_broker_segment.rb +34 -46
  324. data/lib/new_relic/agent/transaction/request_attributes.rb +40 -40
  325. data/lib/new_relic/agent/transaction/segment.rb +46 -10
  326. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +2 -4
  327. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +3 -3
  328. data/lib/new_relic/agent/transaction/trace.rb +22 -25
  329. data/lib/new_relic/agent/transaction/trace_builder.rb +11 -12
  330. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  331. data/lib/new_relic/agent/transaction/trace_node.rb +36 -32
  332. data/lib/new_relic/agent/transaction/tracing.rb +16 -13
  333. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +7 -7
  334. data/lib/new_relic/agent/transaction.rb +248 -205
  335. data/lib/new_relic/agent/transaction_error_primitive.rb +34 -37
  336. data/lib/new_relic/agent/transaction_event_aggregator.rb +17 -17
  337. data/lib/new_relic/agent/transaction_event_primitive.rb +44 -56
  338. data/lib/new_relic/agent/transaction_event_recorder.rb +17 -16
  339. data/lib/new_relic/agent/transaction_metrics.rb +11 -10
  340. data/lib/new_relic/agent/transaction_sampler.rb +9 -14
  341. data/lib/new_relic/agent/transaction_time_aggregator.rb +33 -28
  342. data/lib/new_relic/agent/utilization/aws.rb +35 -5
  343. data/lib/new_relic/agent/utilization/azure.rb +7 -7
  344. data/lib/new_relic/agent/utilization/gcp.rb +11 -11
  345. data/lib/new_relic/agent/utilization/pcf.rb +7 -6
  346. data/lib/new_relic/agent/utilization/vendor.rb +45 -30
  347. data/lib/new_relic/agent/utilization_data.rb +8 -6
  348. data/lib/new_relic/agent/vm/jruby_vm.rb +2 -2
  349. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +4 -4
  350. data/lib/new_relic/agent/vm/mri_vm.rb +54 -26
  351. data/lib/new_relic/agent/vm/snapshot.rb +6 -6
  352. data/lib/new_relic/agent/vm.rb +2 -2
  353. data/lib/new_relic/agent/worker_loop.rb +11 -13
  354. data/lib/new_relic/agent.rb +219 -89
  355. data/lib/new_relic/cli/command.rb +22 -24
  356. data/lib/new_relic/cli/commands/deployments.rb +102 -52
  357. data/lib/new_relic/cli/commands/install.rb +33 -35
  358. data/lib/new_relic/coerce.rb +42 -15
  359. data/lib/new_relic/collection_helper.rb +51 -49
  360. data/lib/new_relic/constants.rb +38 -0
  361. data/lib/new_relic/control/class_methods.rb +6 -6
  362. data/lib/new_relic/control/frameworks/external.rb +3 -3
  363. data/lib/new_relic/control/frameworks/rails.rb +50 -32
  364. data/lib/new_relic/control/frameworks/rails3.rb +4 -5
  365. data/lib/new_relic/control/frameworks/rails4.rb +2 -2
  366. data/lib/new_relic/control/frameworks/rails_notifications.rb +2 -2
  367. data/lib/new_relic/control/frameworks/ruby.rb +4 -4
  368. data/lib/new_relic/control/frameworks/sinatra.rb +8 -2
  369. data/lib/new_relic/control/frameworks.rb +2 -2
  370. data/lib/new_relic/control/instance_methods.rb +33 -42
  371. data/lib/new_relic/control/instrumentation.rb +40 -12
  372. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  373. data/lib/new_relic/control/server_methods.rb +4 -5
  374. data/lib/new_relic/control.rb +2 -3
  375. data/lib/new_relic/delayed_job_injection.rb +2 -2
  376. data/lib/new_relic/dependency_detection.rb +129 -31
  377. data/lib/new_relic/environment_report.rb +42 -36
  378. data/lib/new_relic/helper.rb +50 -8
  379. data/lib/new_relic/language_support.rb +31 -7
  380. data/lib/new_relic/latest_changes.rb +11 -10
  381. data/lib/new_relic/local_environment.rb +23 -27
  382. data/lib/new_relic/metric_data.rb +32 -27
  383. data/lib/new_relic/metric_spec.rb +9 -7
  384. data/lib/new_relic/noticed_error.rb +60 -45
  385. data/lib/new_relic/rack/agent_hooks.rb +2 -2
  386. data/lib/new_relic/rack/agent_middleware.rb +6 -4
  387. data/lib/new_relic/rack/browser_monitoring.rb +136 -115
  388. data/lib/new_relic/rack.rb +2 -2
  389. data/lib/new_relic/recipes/capistrano3.rb +5 -63
  390. data/lib/new_relic/recipes/capistrano_legacy.rb +25 -28
  391. data/lib/new_relic/recipes/helpers/send_deployment.rb +70 -0
  392. data/lib/new_relic/recipes.rb +2 -2
  393. data/lib/new_relic/supportability_helper.rb +23 -7
  394. data/lib/new_relic/traced_thread.rb +39 -0
  395. data/lib/new_relic/version.rb +7 -18
  396. data/lib/newrelic_rpm.rb +21 -34
  397. data/lib/sequel/extensions/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +18 -21
  398. data/lib/sequel/plugins/{newrelic_instrumentation.rb → new_relic_instrumentation.rb} +10 -16
  399. data/lib/tasks/all.rb +4 -4
  400. data/lib/tasks/config.rake +24 -120
  401. data/lib/tasks/coverage_report.rake +28 -0
  402. data/lib/tasks/helpers/config.html.erb +21 -0
  403. data/lib/tasks/helpers/format.rb +123 -0
  404. data/lib/tasks/helpers/matches.rb +12 -0
  405. data/lib/tasks/helpers/prompt.rb +24 -0
  406. data/lib/tasks/helpers/removers.rb +33 -0
  407. data/lib/tasks/install.rake +8 -4
  408. data/lib/tasks/instrumentation_generator/README.md +63 -0
  409. data/lib/tasks/instrumentation_generator/TODO.md +33 -0
  410. data/lib/tasks/instrumentation_generator/instrumentation.thor +121 -0
  411. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +9 -0
  412. data/lib/tasks/instrumentation_generator/templates/chain.tt +22 -0
  413. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +8 -0
  414. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +29 -0
  415. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +13 -0
  416. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +3 -0
  417. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +19 -0
  418. data/lib/tasks/instrumentation_generator/templates/prepend.tt +13 -0
  419. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +3 -0
  420. data/lib/tasks/instrumentation_generator/templates/test.tt +15 -0
  421. data/lib/tasks/multiverse.rake +4 -0
  422. data/lib/tasks/multiverse.rb +23 -9
  423. data/lib/tasks/newrelic.rb +3 -2
  424. data/lib/tasks/tests.rake +17 -17
  425. data/newrelic.yml +672 -3
  426. data/newrelic_rpm.gemspec +50 -34
  427. data/recipes/newrelic.rb +3 -3
  428. data/test/agent_helper.rb +414 -98
  429. metadata +302 -93
  430. data/.travis.yml +0 -170
  431. data/bin/mongrel_rpm +0 -33
  432. data/cert/cacert.pem +0 -1177
  433. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  434. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  435. data/lib/new_relic/agent/configuration/event_data.rb +0 -39
  436. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  437. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -44
  438. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +0 -53
  439. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -40
  440. data/lib/new_relic/agent/distributed_trace_payload.rb +0 -242
  441. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  442. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -74
  443. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -25
  444. data/lib/new_relic/agent/instrumentation/data_mapper.rb +0 -202
  445. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -135
  446. data/lib/new_relic/agent/instrumentation/excon/connection.rb +0 -46
  447. data/lib/new_relic/agent/instrumentation/http.rb +0 -46
  448. data/lib/new_relic/agent/instrumentation/merb/controller.rb +0 -44
  449. data/lib/new_relic/agent/instrumentation/merb/errors.rb +0 -33
  450. data/lib/new_relic/agent/instrumentation/net.rb +0 -50
  451. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +0 -125
  452. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +0 -46
  453. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -26
  454. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -33
  455. data/lib/new_relic/agent/range_extensions.rb +0 -47
  456. data/lib/new_relic/agent/supported_versions.rb +0 -275
  457. data/lib/new_relic/agent/transaction/attributes.rb +0 -154
  458. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  459. data/lib/new_relic/build.rb +0 -2
  460. data/lib/new_relic/control/frameworks/merb.rb +0 -29
  461. data/lib/new_relic/metrics.rb +0 -13
  462. data/lib/tasks/config.html.erb +0 -32
  463. data/lib/tasks/versions.html.erb +0 -28
  464. data/lib/tasks/versions.postface.html +0 -8
  465. data/lib/tasks/versions.preface.html +0 -9
  466. data/lib/tasks/versions.rake +0 -65
  467. data/lib/tasks/versions.txt.erb +0 -14
  468. /data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
data/.rubocop.yml ADDED
@@ -0,0 +1,1845 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require:
4
+ # Default minitest configurations: https://github.com/rubocop/rubocop-minitest/blob/master/config/default.yml
5
+ - rubocop-minitest
6
+ # Default performance configurations: https://github.com/rubocop/rubocop-performance/blob/master/config/default.yml
7
+ - rubocop-performance
8
+ # Default rake configurations: https://github.com/rubocop/rubocop-rake/blob/master/config/default.yml
9
+ - rubocop-rake
10
+
11
+ AllCops:
12
+ TargetRubyVersion: 2.7
13
+ # Rubocop shouldn't run on auto generated files.
14
+ Exclude:
15
+ - 'test/multiverse/suites/active_record/db/schema.rb'
16
+ - 'test/multiverse/suites/active_record_pg/db/schema.rb'
17
+
18
+ # New cops
19
+ Layout/LineContinuationLeadingSpace: # new in 1.31
20
+ Enabled: true
21
+ Layout/LineContinuationSpacing: # new in 1.31
22
+ Enabled: true
23
+ Lint/ConstantOverwrittenInRescue: # new in 1.31
24
+ Enabled: true
25
+ Lint/DuplicateMagicComment: # new in 1.37
26
+ Enabled: true
27
+ Lint/NonAtomicFileOperation: # new in 1.31
28
+ Enabled: true
29
+ Lint/RefinementImportMethods: # new in 1.27
30
+ Enabled: true
31
+ Lint/RequireRangeParentheses: # new in 1.32
32
+ Enabled: true
33
+ Lint/UselessRuby2Keywords: # new in 1.23
34
+ Enabled: true
35
+ Naming/BlockForwarding: # new in 1.24
36
+ Enabled: true
37
+ Security/CompoundHash: # new in 1.28
38
+ Enabled: true
39
+ Style/ArrayIntersect: # new in 1.40
40
+ Enabled: true
41
+ Style/EmptyHeredoc: # new in 1.32
42
+ Enabled: true
43
+ Style/FileRead: # new in 1.24
44
+ Enabled: true
45
+ Style/FileWrite: # new in 1.24
46
+ Enabled: true
47
+ Style/MagicCommentFormat: # new in 1.35
48
+ Enabled: true
49
+ Style/MapCompactWithConditionalBlock: # new in 1.30
50
+ Enabled: true
51
+ Style/MapToSet: # new in 1.42
52
+ Enabled: true
53
+ Style/MinMaxComparison: # new in 1.42
54
+ Enabled: true
55
+ Style/NestedFileDirname: # new in 1.26
56
+ Enabled: true
57
+ Style/ObjectThen: # new in 1.28
58
+ Enabled: true
59
+ Style/OperatorMethodCall: # new in 1.37
60
+ Enabled: true
61
+ Style/RedundantConstantBase: # new in 1.40
62
+ Enabled: true
63
+ Style/RedundantDoubleSplatHashBraces: # new in 1.41
64
+ Enabled: true
65
+ Style/RedundantEach: # new in 1.38
66
+ Enabled: true
67
+ Style/RedundantInitialize: # new in 1.27
68
+ Enabled: true
69
+ Style/RedundantStringEscape: # new in 1.37, 'pending' by default so enabled to make sure it's applied
70
+ Enabled: true
71
+ Style/YodaExpression: # new in 1.42
72
+ Enabled: true
73
+ Minitest/AssertKindOf: # new in 0.10
74
+ Enabled: true
75
+ Minitest/AssertOutput: # new in 0.10
76
+ Enabled: true
77
+ Minitest/AssertPathExists: # new in 0.10
78
+ Enabled: true
79
+ Minitest/AssertPredicate: # new in 0.18
80
+ Enabled: true
81
+ Minitest/AssertRaisesCompoundBody: # new in 0.21
82
+ Enabled: true
83
+ Minitest/AssertRaisesWithRegexpArgument: # new in 0.22
84
+ Enabled: true
85
+ Minitest/AssertSilent: # new in 0.10
86
+ Enabled: true
87
+ Minitest/AssertWithExpectedArgument: # new in 0.11
88
+ Enabled: true
89
+ Minitest/AssertionInLifecycleHook: # new in 0.10
90
+ Enabled: true
91
+ Minitest/DuplicateTestRun: # new in 0.19
92
+ Enabled: true
93
+ Minitest/EmptyLineBeforeAssertionMethods: # new in 0.23
94
+ Enabled: true
95
+ Minitest/LiteralAsActualArgument: # new in 0.10
96
+ Enabled: true
97
+ Minitest/MultipleAssertions: # new in 0.10
98
+ Enabled: true
99
+ Minitest/RefuteInDelta: # new in 0.10
100
+ Enabled: true
101
+ Minitest/RefuteKindOf: # new in 0.10
102
+ Enabled: true
103
+ Minitest/RefutePathExists: # new in 0.10
104
+ Enabled: true
105
+ Minitest/SkipEnsure: # new in 0.20
106
+ Enabled: true
107
+ Minitest/SkipWithoutReason: # new in 0.24
108
+ Enabled: true
109
+ Minitest/UnreachableAssertion: # new in 0.14
110
+ Enabled: true
111
+ Minitest/UnspecifiedException: # new in 0.10
112
+ Enabled: true
113
+ Performance/AncestorsInclude: # new in 1.7
114
+ Enabled: true
115
+ Performance/BigDecimalWithNumericArgument: # new in 1.7
116
+ Enabled: true
117
+ Performance/BlockGivenWithExplicitBlock: # new in 1.9
118
+ Enabled: true
119
+ Performance/CollectionLiteralInLoop: # new in 1.8
120
+ Enabled: true
121
+ Performance/ConcurrentMonotonicTime: # new in 1.12
122
+ Enabled: true
123
+ Performance/ConstantRegexp: # new in 1.9
124
+ Enabled: true
125
+ Performance/RedundantEqualityComparisonBlock: # new in 1.10
126
+ Enabled: true
127
+ Performance/RedundantSortBlock: # new in 1.7
128
+ Enabled: true
129
+ Performance/RedundantSplitRegexpArgument: # new in 1.10
130
+ Enabled: true
131
+ Performance/RedundantStringChars: # new in 1.7
132
+ Enabled: true
133
+ Performance/ReverseFirst: # new in 1.7
134
+ Enabled: true
135
+ Performance/SortReverse: # new in 1.7
136
+ Enabled: true
137
+ Performance/Squeeze: # new in 1.7
138
+ Enabled: true
139
+ Performance/StringIdentifierArgument: # new in 1.13
140
+ Enabled: true
141
+ Performance/StringInclude: # new in 1.7
142
+ Enabled: true
143
+ Performance/Sum: # new in 1.8, pending so left enabled explicitly until 2.0
144
+ Enabled: true
145
+
146
+ # Old cops
147
+
148
+ Bundler/DuplicatedGem:
149
+ Enabled: true
150
+ Include:
151
+ - '**/*.gemfile'
152
+ - '**/Gemfile'
153
+ - '**/gems.rb'
154
+ - '**/*.gemspec'
155
+
156
+ Bundler/GemComment:
157
+ Enabled: false
158
+
159
+ Bundler/GemFilename:
160
+ Enabled: false
161
+
162
+ Bundler/GemVersion:
163
+ Enabled: false
164
+
165
+ Bundler/InsecureProtocolSource:
166
+ Enabled: true
167
+ Include:
168
+ - '**/*.gemfile'
169
+ - '**/Gemfile'
170
+ - '**/gems.rb'
171
+
172
+ Bundler/OrderedGems:
173
+ Enabled: false
174
+
175
+ Gemspec/DeprecatedAttributeAssignment:
176
+ Enabled: true
177
+
178
+ Gemspec/DuplicatedAssignment:
179
+ Enabled: true
180
+ Include:
181
+ - '**/*.gemspec'
182
+
183
+ Gemspec/OrderedDependencies:
184
+ Enabled: false
185
+
186
+ Gemspec/RequireMFA:
187
+ Enabled: false
188
+
189
+ Gemspec/RequiredRubyVersion:
190
+ Enabled: false
191
+
192
+ Gemspec/RubyVersionGlobalsUsage:
193
+ Enabled: false
194
+
195
+ Layout/AccessModifierIndentation:
196
+ Enabled: true
197
+ EnforcedStyle: indent
198
+ IndentationWidth: ~
199
+
200
+ Layout/ArgumentAlignment:
201
+ Enabled: true
202
+ EnforcedStyle: with_fixed_indentation
203
+
204
+ Layout/ArrayAlignment:
205
+ Enabled: true
206
+ EnforcedStyle: with_fixed_indentation
207
+
208
+ Layout/AssignmentIndentation:
209
+ Enabled: true
210
+ IndentationWidth: ~
211
+
212
+ Layout/BeginEndAlignment:
213
+ Enabled: true
214
+ EnforcedStyleAlignWith: start_of_line
215
+ AutoCorrect: true
216
+ Severity: warning
217
+
218
+ Layout/BlockAlignment:
219
+ Enabled: true
220
+ EnforcedStyleAlignWith: either
221
+
222
+ Layout/BlockEndNewline:
223
+ Enabled: true
224
+
225
+ Layout/CaseIndentation:
226
+ # Disabled because IndentOneStep can't be configured for one-liner cases. See:
227
+ # https://github.com/rubocop-hq/rubocop/issues/6447
228
+ Enabled: false
229
+
230
+ Layout/ClassStructure:
231
+ Enabled: false
232
+
233
+ Layout/ClosingHeredocIndentation:
234
+ Enabled: true
235
+
236
+ Layout/ClosingParenthesisIndentation:
237
+ Enabled: true
238
+
239
+ Layout/CommentIndentation:
240
+ Enabled: true
241
+
242
+ Layout/DefEndAlignment:
243
+ Enabled: true
244
+ EnforcedStyleAlignWith: start_of_line
245
+ AutoCorrect: true
246
+ Severity: warning
247
+
248
+ Layout/DotPosition:
249
+ Enabled: true
250
+ EnforcedStyle: leading
251
+
252
+ Layout/ElseAlignment:
253
+ Enabled: true
254
+
255
+ Layout/EmptyComment:
256
+ Enabled: true
257
+ AllowBorderComment: true
258
+ AllowMarginComment: true
259
+
260
+ Layout/EmptyLineAfterMultilineCondition:
261
+ Enabled: false
262
+
263
+ Layout/EmptyLines:
264
+ Enabled: true
265
+
266
+ Layout/EmptyLinesAroundAccessModifier:
267
+ Enabled: true
268
+
269
+ Layout/EmptyLinesAroundArguments:
270
+ Enabled: true
271
+
272
+ Layout/EmptyLinesAroundAttributeAccessor:
273
+ Enabled: false
274
+
275
+ Layout/EmptyLinesAroundBeginBody:
276
+ Enabled: true
277
+
278
+ Layout/EmptyLinesAroundBlockBody:
279
+ Enabled: true
280
+ EnforcedStyle: no_empty_lines
281
+
282
+ Layout/EmptyLinesAroundClassBody:
283
+ Enabled: true
284
+ EnforcedStyle: no_empty_lines
285
+
286
+ Layout/EmptyLinesAroundExceptionHandlingKeywords:
287
+ Enabled: true
288
+
289
+ Layout/EmptyLinesAroundMethodBody:
290
+ Enabled: true
291
+
292
+ Layout/EmptyLinesAroundModuleBody:
293
+ Enabled: true
294
+ EnforcedStyle: no_empty_lines
295
+
296
+ Layout/EndAlignment:
297
+ Enabled: true
298
+ AutoCorrect: true
299
+ EnforcedStyleAlignWith: variable
300
+ Severity: warning
301
+
302
+ Layout/EndOfLine:
303
+ Enabled: true
304
+ EnforcedStyle: native
305
+
306
+ Layout/ExtraSpacing:
307
+ Enabled: true
308
+ AllowForAlignment: false
309
+ AllowBeforeTrailingComments: false
310
+ ForceEqualSignAlignment: false
311
+
312
+ Layout/FirstArgumentIndentation:
313
+ Enabled: true
314
+ EnforcedStyle: consistent
315
+ IndentationWidth: ~
316
+
317
+ Layout/FirstArrayElementIndentation:
318
+ Enabled: true
319
+ EnforcedStyle: consistent
320
+ IndentationWidth: ~
321
+
322
+ Layout/FirstArrayElementLineBreak:
323
+ Enabled: false
324
+
325
+ Layout/FirstHashElementIndentation:
326
+ Enabled: true
327
+ EnforcedStyle: consistent
328
+ IndentationWidth: ~
329
+
330
+ Layout/FirstHashElementLineBreak:
331
+ Enabled: false
332
+
333
+ Layout/FirstMethodArgumentLineBreak:
334
+ Enabled: false
335
+
336
+ Layout/FirstMethodParameterLineBreak:
337
+ Enabled: false
338
+
339
+ Layout/FirstParameterIndentation:
340
+ Enabled: false
341
+
342
+ Layout/HashAlignment:
343
+ Enabled: true
344
+ EnforcedHashRocketStyle: key
345
+ EnforcedColonStyle: key
346
+ EnforcedLastArgumentHashStyle: always_inspect
347
+
348
+ Layout/HeredocArgumentClosingParenthesis:
349
+ Enabled: false
350
+
351
+ Layout/IndentationConsistency:
352
+ Enabled: true
353
+ EnforcedStyle: normal
354
+
355
+ Layout/IndentationStyle:
356
+ Enabled: true
357
+ IndentationWidth: ~
358
+
359
+ Layout/IndentationWidth:
360
+ Enabled: true
361
+ Width: 2
362
+ AllowedPatterns: []
363
+
364
+ Layout/InitialIndentation:
365
+ Enabled: true
366
+
367
+ Layout/LeadingCommentSpace:
368
+ Enabled: true
369
+
370
+ Layout/LeadingEmptyLines:
371
+ Enabled: true
372
+
373
+ Layout/LineEndStringConcatenationIndentation:
374
+ Enabled: false
375
+
376
+ Layout/LineLength:
377
+ # TODO: get this down to something closer to the 80 col ideal
378
+ # we should be able to manage 120
379
+ Max: 576
380
+
381
+ Layout/MultilineArrayBraceLayout:
382
+ Enabled: true
383
+ EnforcedStyle: symmetrical
384
+
385
+ Layout/MultilineArrayLineBreaks:
386
+ Enabled: false
387
+
388
+ Layout/MultilineAssignmentLayout:
389
+ Enabled: false
390
+
391
+ Layout/MultilineBlockLayout:
392
+ Enabled: true
393
+
394
+ Layout/MultilineHashBraceLayout:
395
+ Enabled: true
396
+ EnforcedStyle: symmetrical
397
+
398
+ Layout/MultilineHashKeyLineBreaks:
399
+ Enabled: false
400
+
401
+ Layout/MultilineMethodArgumentLineBreaks:
402
+ Enabled: false
403
+
404
+ Layout/MultilineMethodCallBraceLayout:
405
+ Enabled: true
406
+ EnforcedStyle: symmetrical
407
+
408
+ Layout/MultilineMethodCallIndentation:
409
+ Enabled: true
410
+ EnforcedStyle: indented
411
+ IndentationWidth: ~
412
+
413
+ Layout/MultilineMethodDefinitionBraceLayout:
414
+ Enabled: true
415
+ EnforcedStyle: symmetrical
416
+
417
+ Layout/MultilineOperationIndentation:
418
+ Enabled: true
419
+ EnforcedStyle: indented
420
+ IndentationWidth: ~
421
+
422
+ Layout/ParameterAlignment:
423
+ Enabled: true
424
+ EnforcedStyle: with_fixed_indentation
425
+ IndentationWidth: ~
426
+
427
+ Layout/RedundantLineBreak:
428
+ Enabled: false
429
+
430
+ Layout/RescueEnsureAlignment:
431
+ Enabled: true
432
+
433
+ Layout/SingleLineBlockChain:
434
+ Enabled: false
435
+
436
+ Layout/SpaceAfterColon:
437
+ Enabled: true
438
+
439
+ Layout/SpaceAfterComma:
440
+ Enabled: true
441
+
442
+ Layout/SpaceAfterMethodName:
443
+ Enabled: true
444
+
445
+ Layout/SpaceAfterNot:
446
+ Enabled: true
447
+
448
+ Layout/SpaceAfterSemicolon:
449
+ Enabled: true
450
+
451
+ Layout/SpaceAroundBlockParameters:
452
+ Enabled: true
453
+ EnforcedStyleInsidePipes: no_space
454
+
455
+ Layout/SpaceAroundEqualsInParameterDefault:
456
+ Enabled: true
457
+ EnforcedStyle: space
458
+
459
+ Layout/SpaceAroundKeyword:
460
+ Enabled: true
461
+
462
+ Layout/SpaceAroundMethodCallOperator:
463
+ Enabled: true
464
+
465
+ Layout/SpaceAroundOperators:
466
+ Enabled: true
467
+ AllowForAlignment: true
468
+
469
+ Layout/SpaceBeforeBlockBraces:
470
+ Enabled: true
471
+ EnforcedStyle: space
472
+ EnforcedStyleForEmptyBraces: space
473
+
474
+ Layout/SpaceBeforeBrackets:
475
+ Enabled: false
476
+
477
+ Layout/SpaceBeforeComma:
478
+ Enabled: true
479
+
480
+ Layout/SpaceBeforeComment:
481
+ Enabled: true
482
+
483
+ Layout/SpaceBeforeFirstArg:
484
+ Enabled: true
485
+ AllowForAlignment: true
486
+
487
+ Layout/SpaceBeforeSemicolon:
488
+ Enabled: true
489
+
490
+ Layout/SpaceInsideArrayLiteralBrackets:
491
+ Enabled: true
492
+ EnforcedStyle: no_space
493
+ EnforcedStyleForEmptyBrackets: no_space
494
+
495
+ Layout/SpaceInsideArrayPercentLiteral:
496
+ Enabled: true
497
+
498
+ Layout/SpaceInsideBlockBraces:
499
+ Enabled: true
500
+ EnforcedStyle: space
501
+ EnforcedStyleForEmptyBraces: no_space
502
+ SpaceBeforeBlockParameters: true
503
+
504
+ Layout/SpaceInsideHashLiteralBraces:
505
+ Enabled: true
506
+ EnforcedStyle: no_space
507
+ EnforcedStyleForEmptyBraces: no_space
508
+
509
+ Layout/SpaceInsideParens:
510
+ Enabled: true
511
+ EnforcedStyle: no_space
512
+
513
+ Layout/SpaceInsideRangeLiteral:
514
+ Enabled: true
515
+
516
+ Layout/SpaceInsideReferenceBrackets:
517
+ Enabled: true
518
+ EnforcedStyle: no_space
519
+ EnforcedStyleForEmptyBrackets: no_space
520
+
521
+ Layout/SpaceInsideStringInterpolation:
522
+ Enabled: true
523
+ EnforcedStyle: no_space
524
+
525
+ Layout/TrailingEmptyLines:
526
+ Enabled: true
527
+ EnforcedStyle: final_newline
528
+
529
+ Layout/TrailingWhitespace:
530
+ Enabled: true
531
+ AllowInHeredoc: true
532
+
533
+ Lint/AmbiguousAssignment:
534
+ Enabled: true
535
+
536
+ Lint/AmbiguousBlockAssociation:
537
+ Enabled: false
538
+
539
+ Lint/AmbiguousOperatorPrecedence:
540
+ Enabled: false
541
+
542
+ Lint/AmbiguousRange:
543
+ Enabled: false
544
+
545
+ Lint/AssignmentInCondition:
546
+ Enabled: false
547
+
548
+ Lint/BigDecimalNew:
549
+ Enabled: true
550
+
551
+ Lint/BinaryOperatorWithIdenticalOperands:
552
+ Enabled: false
553
+
554
+ Lint/CircularArgumentReference:
555
+ Enabled: true
556
+
557
+ Lint/ConstantDefinitionInBlock:
558
+ Enabled: false
559
+
560
+ Lint/ConstantResolution:
561
+ Enabled: false
562
+
563
+ Lint/Debugger:
564
+ Enabled: true
565
+
566
+ Lint/DeprecatedConstants:
567
+ Enabled: true
568
+
569
+ Lint/DeprecatedOpenSSLConstant:
570
+ Enabled: true
571
+
572
+ Lint/DisjunctiveAssignmentInConstructor:
573
+ Enabled: false
574
+
575
+ Lint/DuplicateBranch:
576
+ Enabled: false
577
+
578
+ Lint/DuplicateElsifCondition:
579
+ Enabled: true
580
+
581
+ Lint/DuplicateHashKey:
582
+ Enabled: true
583
+
584
+ Lint/DuplicateRegexpCharacterClassElement:
585
+ Enabled: true
586
+
587
+ Lint/DuplicateRequire:
588
+ Enabled: true
589
+
590
+ Lint/DuplicateRescueException:
591
+ Enabled: true
592
+
593
+ Lint/EachWithObjectArgument:
594
+ Enabled: true
595
+
596
+ Lint/ElseLayout:
597
+ Enabled: true
598
+
599
+ Lint/EmptyBlock:
600
+ Enabled: false
601
+
602
+ Lint/EmptyClass:
603
+ Enabled: false
604
+
605
+ Lint/EmptyConditionalBody:
606
+ Enabled: false
607
+
608
+ Lint/EmptyExpression:
609
+ Enabled: true
610
+
611
+ Lint/EmptyFile:
612
+ Enabled: false
613
+
614
+ Lint/EmptyInPattern:
615
+ Enabled: false
616
+
617
+ Lint/EmptyInterpolation:
618
+ Enabled: true
619
+
620
+ Lint/EmptyWhen:
621
+ Enabled: true
622
+ AllowComments: true
623
+
624
+ Lint/ErbNewArguments:
625
+ Enabled: true
626
+
627
+ Lint/FlipFlop:
628
+ Enabled: true
629
+
630
+ # Disabling for now
631
+ Lint/FloatComparison:
632
+ Enabled: false
633
+
634
+ Lint/FloatOutOfRange:
635
+ Enabled: true
636
+
637
+ Lint/FormatParameterMismatch:
638
+ Enabled: true
639
+
640
+ Lint/HashCompareByIdentity:
641
+ Enabled: false
642
+
643
+ Lint/HeredocMethodCallPosition:
644
+ Enabled: false
645
+
646
+ Lint/IdentityComparison:
647
+ Enabled: true
648
+
649
+ Lint/ImplicitStringConcatenation:
650
+ Enabled: true
651
+
652
+ # Disabling for now
653
+ Lint/IneffectiveAccessModifier:
654
+ Enabled: false
655
+
656
+ # Disabling for now
657
+ Lint/InheritException:
658
+ Enabled: false
659
+ # EnforcedStyle: runtime_error
660
+
661
+ # Disabling for now
662
+ Lint/InterpolationCheck:
663
+ Enabled: false
664
+
665
+ Lint/LambdaWithoutLiteralBlock:
666
+ Enabled: false
667
+
668
+ Lint/LiteralAsCondition:
669
+ Enabled: true
670
+
671
+ Lint/LiteralInInterpolation:
672
+ Enabled: true
673
+
674
+ Lint/Loop:
675
+ Enabled: true
676
+
677
+ Lint/MissingCopEnableDirective:
678
+ Enabled: true
679
+ MaximumRangeSize: .inf
680
+
681
+ Lint/MissingSuper:
682
+ Enabled: false
683
+
684
+ Lint/MixedRegexpCaptureTypes:
685
+ Enabled: true
686
+
687
+ Lint/MultipleComparison:
688
+ Enabled: true
689
+
690
+ # Disabling for now
691
+ Lint/NestedMethodDefinition:
692
+ Enabled: false
693
+
694
+ Lint/NestedPercentLiteral:
695
+ Enabled: true
696
+
697
+ Lint/NextWithoutAccumulator:
698
+ Enabled: true
699
+
700
+ Lint/NoReturnInBeginEndBlocks:
701
+ Enabled: false
702
+
703
+ # Disabling for now
704
+ Lint/NonDeterministicRequireOrder:
705
+ Enabled: false
706
+
707
+ # Disabling for now
708
+ Lint/NonLocalExitFromIterator:
709
+ Enabled: false
710
+
711
+ Lint/NumberConversion:
712
+ Enabled: false
713
+
714
+ Lint/NumberedParameterAssignment:
715
+ Enabled: true
716
+
717
+ Lint/OrAssignmentToConstant:
718
+ Enabled: false
719
+
720
+ Lint/OrderedMagicComments:
721
+ Enabled: true
722
+
723
+ Lint/OutOfRangeRegexpRef:
724
+ Enabled: true
725
+
726
+ # Disabling for now
727
+ Lint/ParenthesesAsGroupedExpression:
728
+ Enabled: false
729
+
730
+ Lint/PercentStringArray:
731
+ Enabled: false
732
+
733
+ Lint/PercentSymbolArray:
734
+ Enabled: true
735
+
736
+ # Disabling for now
737
+ Lint/RaiseException:
738
+ Enabled: false
739
+
740
+ Lint/RandOne:
741
+ Enabled: true
742
+
743
+ Lint/RedundantCopDisableDirective:
744
+ Enabled: true
745
+
746
+ Lint/RedundantCopEnableDirective:
747
+ Enabled: false
748
+
749
+ Lint/RedundantDirGlobSort:
750
+ Enabled: false
751
+
752
+ # Disabling for now
753
+ Lint/RedundantRequireStatement:
754
+ Enabled: false
755
+
756
+ Lint/RedundantSafeNavigation:
757
+ Enabled: false
758
+
759
+ # Disabling for now
760
+ Lint/RedundantSplatExpansion:
761
+ Enabled: false
762
+
763
+ # Disabling for now
764
+ Lint/RedundantStringCoercion:
765
+ Enabled: false
766
+
767
+ Lint/RedundantWithIndex:
768
+ Enabled: true
769
+
770
+ Lint/RedundantWithObject:
771
+ Enabled: true
772
+
773
+ Lint/RegexpAsCondition:
774
+ Enabled: true
775
+
776
+ Lint/RequireParentheses:
777
+ Enabled: true
778
+
779
+ # Disabling for now
780
+ Lint/RescueException:
781
+ Enabled: false
782
+
783
+ Lint/RescueType:
784
+ Enabled: true
785
+
786
+ Lint/ReturnInVoidContext:
787
+ Enabled: true
788
+
789
+ Lint/SafeNavigationChain:
790
+ Enabled: true
791
+ AllowedMethods:
792
+ - present?
793
+ - blank?
794
+ - presence
795
+ - try
796
+ - try!
797
+
798
+ Lint/SafeNavigationConsistency:
799
+ Enabled: true
800
+ AllowedMethods:
801
+ - present?
802
+ - blank?
803
+ - presence
804
+ - try
805
+ - try!
806
+
807
+ Lint/SafeNavigationWithEmpty:
808
+ Enabled: true
809
+
810
+ Lint/ScriptPermission:
811
+ Enabled: false
812
+
813
+ Lint/SelfAssignment:
814
+ Enabled: true
815
+
816
+ Lint/SendWithMixinArgument:
817
+ Enabled: false
818
+
819
+ # Disabling for now
820
+ Lint/ShadowedArgument:
821
+ Enabled: false
822
+ # IgnoreImplicitReferences: false
823
+
824
+ # Disabling for now
825
+ Lint/ShadowedException:
826
+ Enabled: false
827
+
828
+ Lint/ShadowingOuterLocalVariable:
829
+ Enabled: false
830
+
831
+ Lint/StructNewOverride:
832
+ Enabled: false
833
+
834
+ Lint/SuppressedException:
835
+ Enabled: false
836
+
837
+ # Disabling for now
838
+ Lint/SymbolConversion:
839
+ Enabled: false
840
+
841
+ Lint/Syntax:
842
+ Enabled: true
843
+
844
+ Lint/ToEnumArguments:
845
+ Enabled: false
846
+
847
+ Lint/ToJSON:
848
+ Enabled: false
849
+
850
+ Lint/TopLevelReturnWithArgument:
851
+ Enabled: true
852
+
853
+ Lint/TrailingCommaInAttributeDeclaration:
854
+ Enabled: true
855
+
856
+ Lint/TripleQuotes:
857
+ Enabled: true
858
+
859
+ # Disabling for now
860
+ Lint/UnderscorePrefixedVariableName:
861
+ Enabled: false
862
+
863
+ Lint/UnexpectedBlockArity:
864
+ Enabled: false
865
+
866
+ # Disabling for now
867
+ Lint/UnifiedInteger:
868
+ Enabled: false
869
+
870
+ Lint/UnmodifiedReduceAccumulator:
871
+ Enabled: false
872
+
873
+ # Disabling for now
874
+ Lint/UnreachableCode:
875
+ Enabled: false
876
+
877
+ Lint/UnreachableLoop:
878
+ Enabled: false
879
+
880
+ Lint/UnusedBlockArgument:
881
+ Enabled: false
882
+
883
+ Lint/UnusedMethodArgument:
884
+ Enabled: false
885
+
886
+ Lint/UriEscapeUnescape:
887
+ Enabled: true
888
+
889
+ Lint/UriRegexp:
890
+ Enabled: true
891
+
892
+ Lint/UselessAccessModifier:
893
+ Enabled: false
894
+
895
+ # Disabling for now
896
+ Lint/UselessAssignment:
897
+ Enabled: false
898
+
899
+ Lint/UselessMethodDefinition:
900
+ Enabled: false
901
+
902
+ Lint/UselessSetterCall:
903
+ Enabled: true
904
+
905
+ # Disabling for now
906
+ Lint/UselessTimes:
907
+ Enabled: false
908
+
909
+ # Disabling for now
910
+ Lint/Void:
911
+ Enabled: false
912
+ # CheckForMethodsWithNoSideEffects: false
913
+
914
+ Lint/IncompatibleIoSelectWithFiberScheduler:
915
+ Enabled: false
916
+
917
+ Lint/RequireRelativeSelfPath:
918
+ Enabled: true
919
+
920
+ Metrics/BlockLength:
921
+ Enabled: false
922
+
923
+ Metrics/BlockNesting:
924
+ Enabled: false
925
+
926
+ Metrics/ClassLength:
927
+ Enabled: false
928
+
929
+ Metrics/CyclomaticComplexity:
930
+ Enabled: false
931
+
932
+ Metrics/MethodLength:
933
+ Enabled: false
934
+
935
+ Metrics/ModuleLength:
936
+ Enabled: false
937
+
938
+ Metrics/ParameterLists:
939
+ Enabled: false
940
+
941
+ Metrics/PerceivedComplexity:
942
+ Enabled: false
943
+
944
+ Migration/DepartmentName:
945
+ Enabled: true
946
+
947
+ Naming/AccessorMethodName:
948
+ Enabled: false
949
+
950
+ Naming/AsciiIdentifiers:
951
+ Enabled: false
952
+
953
+ # Disabling for now
954
+ Naming/BinaryOperatorParameterName:
955
+ Enabled: false
956
+
957
+ Naming/BlockParameterName:
958
+ Enabled: true
959
+ MinNameLength: 1
960
+ AllowNamesEndingInNumbers: true
961
+ AllowedNames: []
962
+ ForbiddenNames: []
963
+
964
+ Naming/ClassAndModuleCamelCase:
965
+ Enabled: true
966
+
967
+ Naming/ConstantName:
968
+ Enabled: true
969
+
970
+ Naming/FileName:
971
+ Enabled: false
972
+
973
+ Naming/HeredocDelimiterCase:
974
+ Enabled: true
975
+ EnforcedStyle: uppercase
976
+
977
+ Naming/HeredocDelimiterNaming:
978
+ Enabled: false
979
+
980
+ Naming/InclusiveLanguage:
981
+ Enabled: false
982
+
983
+ Naming/MemoizedInstanceVariableName:
984
+ Enabled: false
985
+
986
+ Naming/MethodName:
987
+ Enabled: false
988
+
989
+ Naming/MethodParameterName:
990
+ Enabled: false
991
+
992
+ Naming/PredicateName:
993
+ Enabled: false
994
+
995
+ Naming/RescuedExceptionsVariableName:
996
+ Enabled: false
997
+
998
+ Naming/VariableName:
999
+ Enabled: false
1000
+ # EnforcedStyle: snake_case
1001
+
1002
+ Naming/VariableNumber:
1003
+ Enabled: false
1004
+
1005
+ # TODO: OLD RUBIES - Requires 2.7
1006
+ Performance/BindCall:
1007
+ Enabled: false
1008
+
1009
+ # TODO: OLD RUBIES - Requites 2.5
1010
+ Performance/DeletePrefix:
1011
+ Enabled: false
1012
+
1013
+ # TODO: OLD RUBIES - Requires 2.7
1014
+ Performance/MapCompact:
1015
+ Enabled: false
1016
+
1017
+ # TODO: Enable when time can be spent on it (no autocorrect)
1018
+ Performance/MethodObjectAsBlock:
1019
+ Enabled: false
1020
+
1021
+ # Disabling for now
1022
+ Security/Eval:
1023
+ Enabled: false
1024
+
1025
+ # Disabling for now
1026
+ Security/JSONLoad:
1027
+ Enabled: false
1028
+ # AutoCorrect: false
1029
+ # SafeAutoCorrect: false
1030
+
1031
+ Security/MarshalLoad:
1032
+ Enabled: false
1033
+
1034
+ Security/Open:
1035
+ Enabled: true
1036
+ Safe: false
1037
+
1038
+ # Disabling for now
1039
+ Security/YAMLLoad:
1040
+ Enabled: false
1041
+ # SafeAutoCorrect: false
1042
+
1043
+ Security/IoMethods:
1044
+ Enabled: false
1045
+ Safe: false
1046
+
1047
+ # raised unrecognized cop or department
1048
+ # Standard/BlockSingleLineBraces:
1049
+ # Enabled: true
1050
+
1051
+ Style/AccessModifierDeclarations:
1052
+ Enabled: false
1053
+
1054
+ Style/AccessorGrouping:
1055
+ Enabled: false
1056
+
1057
+ # Disabling for now
1058
+ Style/Alias:
1059
+ Enabled: false
1060
+ # EnforcedStyle: prefer_alias_method
1061
+
1062
+ # Disabling for now
1063
+ Style/AndOr:
1064
+ Enabled: false
1065
+
1066
+ # Disabled for support of older ruby versions
1067
+ Style/ArgumentsForwarding:
1068
+ Enabled: false
1069
+
1070
+ Style/ArrayCoercion:
1071
+ Enabled: false
1072
+
1073
+ Style/ArrayJoin:
1074
+ Enabled: true
1075
+
1076
+ Style/AsciiComments:
1077
+ Enabled: false
1078
+
1079
+ Style/Attr:
1080
+ Enabled: true
1081
+
1082
+ Style/AutoResourceCleanup:
1083
+ Enabled: false
1084
+
1085
+ # Disabling for now
1086
+ Style/BarePercentLiterals:
1087
+ Enabled: false
1088
+ EnforcedStyle: bare_percent
1089
+
1090
+ Style/BeginBlock:
1091
+ Enabled: true
1092
+
1093
+ Style/BisectedAttrAccessor:
1094
+ Enabled: false
1095
+
1096
+ Style/BlockComments:
1097
+ Enabled: true
1098
+
1099
+ Style/BlockDelimiters:
1100
+ Enabled: false
1101
+
1102
+ Style/CaseEquality:
1103
+ Enabled: false
1104
+
1105
+ Style/CaseLikeIf:
1106
+ Enabled: false
1107
+
1108
+ Style/CharacterLiteral:
1109
+ Enabled: true
1110
+
1111
+ Style/ClassAndModuleChildren:
1112
+ Enabled: false
1113
+
1114
+ # Disabling for now
1115
+ Style/ClassCheck:
1116
+ Enabled: false
1117
+ # EnforcedStyle: is_a?
1118
+
1119
+ # Disabling for now
1120
+ Style/ClassEqualityComparison:
1121
+ Enabled: false
1122
+
1123
+ Style/ClassMethods:
1124
+ Enabled: true
1125
+
1126
+ Style/ClassMethodsDefinitions:
1127
+ Enabled: false
1128
+
1129
+ Style/ClassVars:
1130
+ Enabled: false
1131
+
1132
+ Style/CollectionCompact:
1133
+ Enabled: false
1134
+
1135
+ Style/CollectionMethods:
1136
+ Enabled: false
1137
+
1138
+ # Disabling for now
1139
+ Style/ColonMethodCall:
1140
+ Enabled: false
1141
+
1142
+ Style/ColonMethodDefinition:
1143
+ Enabled: true
1144
+
1145
+ Style/CombinableLoops:
1146
+ Enabled: false
1147
+
1148
+ # Disabling for now
1149
+ Style/CommandLiteral:
1150
+ Enabled: false
1151
+ # EnforcedStyle: mixed
1152
+ # AllowInnerBackticks: false
1153
+
1154
+ Style/CommentedKeyword:
1155
+ Enabled: false
1156
+
1157
+ # Disabling for now
1158
+ Style/ConditionalAssignment:
1159
+ Enabled: false
1160
+ # EnforcedStyle: assign_to_condition
1161
+ # SingleLineConditionsOnly: true
1162
+ # IncludeTernaryExpressions: true
1163
+
1164
+ Style/ConstantVisibility:
1165
+ Enabled: false
1166
+
1167
+ Style/Copyright:
1168
+ Enabled: false
1169
+
1170
+ Style/DateTime:
1171
+ Enabled: false
1172
+
1173
+ Style/DefWithParentheses:
1174
+ Enabled: true
1175
+
1176
+ # Disabling for now
1177
+ Style/Dir:
1178
+ Enabled: false
1179
+
1180
+ Style/DisableCopsWithinSourceCodeDirective:
1181
+ Enabled: false
1182
+
1183
+ Style/DocumentDynamicEvalDefinition:
1184
+ Enabled: false
1185
+
1186
+ Style/Documentation:
1187
+ Enabled: false
1188
+
1189
+ Style/DocumentationMethod:
1190
+ Enabled: false
1191
+
1192
+ Style/DoubleCopDisableDirective:
1193
+ Enabled: false
1194
+
1195
+ Style/EachForSimpleLoop:
1196
+ Enabled: true
1197
+
1198
+ # Disabling for now
1199
+ Style/EachWithObject:
1200
+ Enabled: false
1201
+
1202
+ Style/EmptyBlockParameter:
1203
+ Enabled: true
1204
+
1205
+ # Disabling for now
1206
+ Style/EmptyCaseCondition:
1207
+ Enabled: false
1208
+
1209
+ Style/EmptyElse:
1210
+ Enabled: true
1211
+ EnforcedStyle: both
1212
+
1213
+ # Disabling for now
1214
+ Style/EmptyLambdaParameter:
1215
+ Enabled: false
1216
+
1217
+ # Disabling for now
1218
+ Style/EmptyLiteral:
1219
+ Enabled: false
1220
+
1221
+ # Disabling for now
1222
+ Style/EmptyMethod:
1223
+ Enabled: false
1224
+ # EnforcedStyle: expanded
1225
+
1226
+ Style/EndBlock:
1227
+ Enabled: true
1228
+ AutoCorrect: true
1229
+
1230
+ Style/EndlessMethod:
1231
+ Enabled: false
1232
+
1233
+ # The use of Dir.home should be preferred over ENV['HOME'], but as of
1234
+ # JRuby 9.3.3.0 the use of ENV['HOME'] is required to deliver the desired
1235
+ # functionality
1236
+ Style/EnvHome:
1237
+ Enabled: false
1238
+
1239
+ # Disabling for now
1240
+ Style/EvalWithLocation:
1241
+ Enabled: false
1242
+
1243
+ Style/EvenOdd:
1244
+ Enabled: false
1245
+
1246
+ Style/ExpandPathArguments:
1247
+ Enabled: false
1248
+
1249
+ Style/ExplicitBlockArgument:
1250
+ Enabled: false
1251
+
1252
+ Style/ExponentialNotation:
1253
+ Enabled: false
1254
+
1255
+ Style/FetchEnvVar:
1256
+ Enabled: false
1257
+
1258
+ Style/FloatDivision:
1259
+ Enabled: false
1260
+
1261
+ # Disabling for now
1262
+ Style/For:
1263
+ Enabled: false
1264
+ # EnforcedStyle: each
1265
+
1266
+ Style/FormatString:
1267
+ Enabled: false
1268
+
1269
+ Style/FormatStringToken:
1270
+ Enabled: false
1271
+
1272
+ # Disabling for now
1273
+ Style/GlobalStdStream:
1274
+ Enabled: false
1275
+
1276
+ # Disabling for now
1277
+ Style/GlobalVars:
1278
+ Enabled: false
1279
+ # AllowedVariables: []
1280
+
1281
+ Style/GuardClause:
1282
+ Enabled: false
1283
+
1284
+ Style/HashAsLastArrayItem:
1285
+ Enabled: false
1286
+
1287
+ # Disabling for now
1288
+ Style/HashConversion:
1289
+ Enabled: false
1290
+
1291
+ Style/HashEachMethods:
1292
+ Enabled: false
1293
+
1294
+ Style/HashExcept:
1295
+ Enabled: true
1296
+
1297
+ Style/HashLikeCase:
1298
+ Enabled: false
1299
+
1300
+ # Documentation: https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax
1301
+ # I believe we want either hash_rockets or no_mixed_keys
1302
+ # Disabling for now
1303
+ Style/HashSyntax:
1304
+ Enabled: false
1305
+ # EnforcedStyle: ruby19_no_mixed_keys
1306
+
1307
+ Style/HashTransformKeys:
1308
+ Enabled: false
1309
+
1310
+ Style/HashTransformValues:
1311
+ Enabled: false
1312
+
1313
+ # Disabling for now
1314
+ Style/IdenticalConditionalBranches:
1315
+ Enabled: false
1316
+
1317
+ # Disabling for now
1318
+ Style/IfInsideElse:
1319
+ Enabled: false
1320
+
1321
+ Style/IfUnlessModifier:
1322
+ Enabled: false
1323
+
1324
+ Style/IfUnlessModifierOfIfUnless:
1325
+ Enabled: true
1326
+
1327
+ Style/IfWithBooleanLiteralBranches:
1328
+ Enabled: true
1329
+
1330
+ Style/IfWithSemicolon:
1331
+ Enabled: true
1332
+
1333
+ Style/ImplicitRuntimeError:
1334
+ Enabled: false
1335
+
1336
+ Style/InPatternThen:
1337
+ Enabled: false
1338
+
1339
+ # Disabling for now
1340
+ Style/InfiniteLoop:
1341
+ Enabled: false
1342
+
1343
+ Style/InlineComment:
1344
+ Enabled: false
1345
+
1346
+ Style/InverseMethods:
1347
+ Enabled: false
1348
+
1349
+ Style/IpAddresses:
1350
+ Enabled: false
1351
+
1352
+ # Disabling for now
1353
+ Style/KeywordParametersOrder:
1354
+ Enabled: false
1355
+
1356
+ Style/Lambda:
1357
+ Enabled: false
1358
+
1359
+ Style/LambdaCall:
1360
+ Enabled: true
1361
+ EnforcedStyle: call
1362
+
1363
+ # Disabling for now
1364
+ Style/LineEndConcatenation:
1365
+ Enabled: false
1366
+ # SafeAutoCorrect: false
1367
+
1368
+ # TODO: OLD RUBIES - enable this cop after support for Ruby <= 2.5 has been
1369
+ # dropped. NewRelic::Agent::InfiniteTracing::Transformer.hash_to_attributes
1370
+ # currently does `values.map {}.to_h`. Newer Rubies should
1371
+ # use `values.to_h {}` instead.
1372
+ Style/MapToHash:
1373
+ Enabled: false
1374
+
1375
+ Style/MethodCallWithArgsParentheses:
1376
+ Enabled: true
1377
+ AllowedMethods:
1378
+ - add_dependency
1379
+ - add_development_dependency
1380
+ - expect
1381
+ - fail
1382
+ - gem
1383
+ - include
1384
+ - print
1385
+ - puts
1386
+ - pp
1387
+ - raise
1388
+ - require
1389
+ - skip
1390
+ - source
1391
+ - stub
1392
+ - stub_const
1393
+ - use
1394
+ AllowedPatterns: [^assert, ^refute]
1395
+
1396
+ Style/MethodCallWithoutArgsParentheses:
1397
+ Enabled: false
1398
+ AllowedMethods: []
1399
+
1400
+ Style/MethodCalledOnDoEndBlock:
1401
+ Enabled: false
1402
+
1403
+ Style/MethodDefParentheses:
1404
+ Enabled: true
1405
+
1406
+ Style/MinMax:
1407
+ Enabled: false
1408
+
1409
+ Style/MissingElse:
1410
+ Enabled: false
1411
+
1412
+ # Disabling for now
1413
+ Style/MissingRespondToMissing:
1414
+ Enabled: false
1415
+
1416
+ # Disabling for now
1417
+ Style/MixinGrouping:
1418
+ Enabled: false
1419
+ # EnforcedStyle: separated
1420
+
1421
+ # Disabling for now
1422
+ Style/MixinUsage:
1423
+ Enabled: false
1424
+
1425
+ Style/ModuleFunction:
1426
+ Enabled: false
1427
+
1428
+ Style/MultilineBlockChain:
1429
+ Enabled: false
1430
+
1431
+ Style/MultilineIfModifier:
1432
+ Enabled: true
1433
+
1434
+ Style/MultilineIfThen:
1435
+ Enabled: true
1436
+
1437
+ Style/MultilineInPatternThen:
1438
+ Enabled: false
1439
+
1440
+ # Disabling for now
1441
+ Style/MultilineMemoization:
1442
+ Enabled: false
1443
+ # EnforcedStyle: keyword
1444
+
1445
+ Style/MultilineMethodSignature:
1446
+ Enabled: false
1447
+
1448
+ Style/MultilineWhenThen:
1449
+ Enabled: true
1450
+
1451
+ Style/MultipleComparison:
1452
+ Enabled: false
1453
+
1454
+ Style/MutableConstant:
1455
+ Enabled: false
1456
+
1457
+ Style/NegatedIf:
1458
+ Enabled: false
1459
+
1460
+ Style/NegatedIfElseCondition:
1461
+ Enabled: false
1462
+
1463
+ Style/NegatedUnless:
1464
+ Enabled: false
1465
+
1466
+ # Disabling for now
1467
+ Style/NegatedWhile:
1468
+ Enabled: false
1469
+
1470
+ Style/NestedModifier:
1471
+ Enabled: true
1472
+
1473
+ # Disabling for now
1474
+ Style/NestedParenthesizedCalls:
1475
+ Enabled: false
1476
+ # AllowedMethods:
1477
+ # - be
1478
+ # - be_a
1479
+ # - be_an
1480
+ # - be_between
1481
+ # - be_falsey
1482
+ # - be_kind_of
1483
+ # - be_instance_of
1484
+ # - be_truthy
1485
+ # - be_within
1486
+ # - eq
1487
+ # - eql
1488
+ # - end_with
1489
+ # - include
1490
+ # - match
1491
+ # - raise_error
1492
+ # - respond_to
1493
+ # - start_with
1494
+
1495
+ Style/NestedTernaryOperator:
1496
+ Enabled: true
1497
+
1498
+ Style/Next:
1499
+ Enabled: false
1500
+
1501
+ # Disabling for now
1502
+ Style/NilLambda:
1503
+ Enabled: false
1504
+
1505
+ Style/Not:
1506
+ Enabled: true
1507
+
1508
+ # Disabling for now
1509
+ Style/NumericLiteralPrefix:
1510
+ Enabled: false
1511
+ # EnforcedOctalStyle: zero_with_o
1512
+
1513
+ Style/NumericLiterals:
1514
+ Enabled: false
1515
+
1516
+ Style/NumericPredicate:
1517
+ Enabled: false
1518
+
1519
+ Style/OneLineConditional:
1520
+ Enabled: true
1521
+
1522
+ # TODO: UNIT TESTS - tests relying on OpenStruct should be refactored to not
1523
+ # do so, given that the use of OpenStruct instances can
1524
+ # give a false sense of security with their extreme
1525
+ # flexibility that may not match realistic code behavior.
1526
+ Style/OpenStructUse:
1527
+ Enabled: false
1528
+
1529
+ Style/OptionHash:
1530
+ Enabled: false
1531
+
1532
+ Style/OptionalArguments:
1533
+ Enabled: true
1534
+
1535
+ Style/OptionalBooleanParameter:
1536
+ Enabled: false
1537
+
1538
+ Style/ParallelAssignment:
1539
+ Enabled: false
1540
+
1541
+ Style/ParenthesesAroundCondition:
1542
+ Enabled: true
1543
+ AllowSafeAssignment: true
1544
+ AllowInMultilineConditions: false
1545
+
1546
+ Style/PercentLiteralDelimiters:
1547
+ Enabled: true
1548
+ PreferredDelimiters:
1549
+ default: ()
1550
+ '%i': '[]'
1551
+ '%I': '[]'
1552
+ '%r': '{}'
1553
+ '%w': '[]'
1554
+ '%W': '[]'
1555
+
1556
+ Style/PercentQLiterals:
1557
+ Enabled: false
1558
+
1559
+ Style/PerlBackrefs:
1560
+ Enabled: false
1561
+
1562
+ Style/PreferredHashMethods:
1563
+ Enabled: false
1564
+
1565
+ Style/QuotedSymbols:
1566
+ Enabled: false
1567
+
1568
+ Style/RaiseArgs:
1569
+ Enabled: false
1570
+
1571
+ Style/RandomWithOffset:
1572
+ Enabled: true
1573
+
1574
+ Style/RedundantArgument:
1575
+ Enabled: false
1576
+
1577
+ # Disabling for now
1578
+ Style/RedundantAssignment:
1579
+ Enabled: false
1580
+
1581
+ # Disabling for now
1582
+ Style/RedundantBegin:
1583
+ Enabled: false
1584
+
1585
+ Style/RedundantCapitalW:
1586
+ Enabled: false
1587
+
1588
+ Style/RedundantCondition:
1589
+ Enabled: true
1590
+
1591
+ Style/RedundantConditional:
1592
+ Enabled: true
1593
+
1594
+ Style/RedundantException:
1595
+ Enabled: true
1596
+
1597
+ Style/RedundantFetchBlock:
1598
+ Enabled: true
1599
+
1600
+ Style/RedundantFileExtensionInRequire:
1601
+ Enabled: true
1602
+
1603
+ # Disabling for now
1604
+ Style/RedundantFreeze:
1605
+ Enabled: false
1606
+
1607
+ # Disabling for now
1608
+ Style/RedundantInterpolation:
1609
+ Enabled: false
1610
+
1611
+ # Disabling for now
1612
+ Style/RedundantParentheses:
1613
+ Enabled: false
1614
+
1615
+ # Disabling for now
1616
+ Style/RedundantPercentQ:
1617
+ Enabled: false
1618
+
1619
+ Style/RedundantRegexpCharacterClass:
1620
+ Enabled: true
1621
+
1622
+ # Disabling for now
1623
+ Style/RedundantRegexpEscape:
1624
+ Enabled: false
1625
+
1626
+ # Disabling for now
1627
+ Style/RedundantReturn:
1628
+ Enabled: false
1629
+ # AllowMultipleReturnValues: false
1630
+
1631
+ # Disabling for now
1632
+ Style/RedundantSelf:
1633
+ Enabled: false
1634
+
1635
+ Style/RedundantSelfAssignment:
1636
+ Enabled: false
1637
+
1638
+ Style/RedundantSelfAssignmentBranch:
1639
+ Enabled: false
1640
+
1641
+ # Disabling for now
1642
+ Style/RedundantSort:
1643
+ Enabled: false
1644
+
1645
+ Style/RedundantSortBy:
1646
+ Enabled: true
1647
+
1648
+ Style/RegexpLiteral:
1649
+ Enabled: false
1650
+
1651
+ # Disabling for now
1652
+ Style/RescueModifier:
1653
+ Enabled: false
1654
+
1655
+ # Disabling for now
1656
+ Style/RescueStandardError:
1657
+ Enabled: false
1658
+ # EnforcedStyle: implicit
1659
+
1660
+ Style/ReturnNil:
1661
+ Enabled: false
1662
+
1663
+ Style/Sample:
1664
+ Enabled: true
1665
+
1666
+ Style/SelfAssignment:
1667
+ Enabled: true
1668
+
1669
+ # Disabling for now
1670
+ Style/Semicolon:
1671
+ Enabled: false
1672
+ # AllowAsExpressionSeparator: false
1673
+
1674
+ Style/Send:
1675
+ Enabled: false
1676
+
1677
+ Style/SignalException:
1678
+ Enabled: false
1679
+
1680
+ Style/SingleArgumentDig:
1681
+ Enabled: false
1682
+
1683
+ Style/SingleLineBlockParams:
1684
+ Enabled: false
1685
+
1686
+ # Disabling for now
1687
+ Style/SingleLineMethods:
1688
+ Enabled: false
1689
+ # AllowIfMethodIsEmpty: false
1690
+
1691
+ # Disabled for support of older ruby versions
1692
+ Style/SlicingWithRange:
1693
+ Enabled: false
1694
+
1695
+ Style/SoleNestedConditional:
1696
+ Enabled: false
1697
+
1698
+ Style/SpecialGlobalVars:
1699
+ Enabled: false
1700
+
1701
+ Style/StabbyLambdaParentheses:
1702
+ Enabled: true
1703
+ EnforcedStyle: require_parentheses
1704
+
1705
+ Style/StaticClass:
1706
+ Enabled: false
1707
+
1708
+ # Do we want this one? Use warn instead of STDERR.puts
1709
+ Style/StderrPuts:
1710
+ Enabled: false
1711
+
1712
+ Style/StringChars:
1713
+ Enabled: true
1714
+
1715
+ Style/StringConcatenation:
1716
+ Enabled: false
1717
+
1718
+ Style/StringHashKeys:
1719
+ Enabled: false
1720
+
1721
+ Style/StringMethods:
1722
+ Enabled: false
1723
+
1724
+ Style/Strip:
1725
+ Enabled: true
1726
+
1727
+ Style/StructInheritance:
1728
+ Enabled: false
1729
+
1730
+ Style/SwapValues:
1731
+ Enabled: false
1732
+
1733
+ Style/SymbolArray:
1734
+ Enabled: false
1735
+
1736
+ # Disabling for now
1737
+ Style/SymbolLiteral:
1738
+ Enabled: false
1739
+
1740
+ Style/SymbolProc:
1741
+ Enabled: false
1742
+
1743
+ Style/TernaryParentheses:
1744
+ Enabled: true
1745
+ EnforcedStyle: require_no_parentheses
1746
+ AllowSafeAssignment: true
1747
+
1748
+ Style/TopLevelMethodDefinition:
1749
+ Enabled: false
1750
+
1751
+ Style/TrailingBodyOnClass:
1752
+ Enabled: true
1753
+
1754
+ Style/TrailingBodyOnMethodDefinition:
1755
+ Enabled: true
1756
+
1757
+ Style/TrailingBodyOnModule:
1758
+ Enabled: true
1759
+
1760
+ Style/TrailingCommaInArguments:
1761
+ Enabled: true
1762
+ EnforcedStyleForMultiline: no_comma
1763
+
1764
+ Style/TrailingCommaInArrayLiteral:
1765
+ Enabled: true
1766
+ EnforcedStyleForMultiline: no_comma
1767
+
1768
+ Style/TrailingCommaInBlockArgs:
1769
+ Enabled: true
1770
+
1771
+ Style/TrailingCommaInHashLiteral:
1772
+ Enabled: true
1773
+ EnforcedStyleForMultiline: no_comma
1774
+
1775
+ Style/TrailingMethodEndStatement:
1776
+ Enabled: true
1777
+
1778
+ Style/TrailingUnderscoreVariable:
1779
+ Enabled: false
1780
+
1781
+ # Do we want? Performance test first
1782
+ Style/TrivialAccessors:
1783
+ Enabled: false
1784
+ # ExactNameMatch: true
1785
+ # AllowPredicates: true
1786
+ # AllowDSLWriters: false
1787
+ # IgnoreClassMethods: false
1788
+ # AllowedMethods:
1789
+ # - to_ary
1790
+ # - to_a
1791
+ # - to_c
1792
+ # - to_enum
1793
+ # - to_h
1794
+ # - to_hash
1795
+ # - to_i
1796
+ # - to_int
1797
+ # - to_io
1798
+ # - to_open
1799
+ # - to_path
1800
+ # - to_proc
1801
+ # - to_r
1802
+ # - to_regexp
1803
+ # - to_str
1804
+ # - to_s
1805
+ # - to_sym
1806
+
1807
+ Style/UnlessElse:
1808
+ Enabled: true
1809
+
1810
+ Style/UnlessLogicalOperators:
1811
+ Enabled: false
1812
+
1813
+ # Disabling for now
1814
+ Style/UnpackFirst:
1815
+ Enabled: false
1816
+
1817
+ # Disabling for now
1818
+ Style/VariableInterpolation:
1819
+ Enabled: false
1820
+
1821
+ Style/WhenThen:
1822
+ Enabled: true
1823
+
1824
+ Style/WhileUntilDo:
1825
+ Enabled: true
1826
+
1827
+ Style/WhileUntilModifier:
1828
+ Enabled: false
1829
+
1830
+ # Disabling for now
1831
+ Style/YodaCondition:
1832
+ Enabled: false
1833
+ # EnforcedStyle: forbid_for_all_comparison_operators
1834
+
1835
+ Style/ZeroLengthPredicate:
1836
+ Enabled: false
1837
+
1838
+ Style/NumberedParameters:
1839
+ Enabled: false
1840
+
1841
+ Style/NumberedParametersLimit:
1842
+ Enabled: false
1843
+
1844
+ Style/SelectByRegexp:
1845
+ Enabled: false