newrelic_rpm 8.2.0 → 9.0.0

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