ddtrace 0.43.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +278 -139
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  10. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  11. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  13. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  14. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
  16. data/.github/workflows/create-next-milestone.yml +2 -2
  17. data/.gitlab-ci.yml +18 -18
  18. data/.rubocop.yml +269 -7
  19. data/.rubocop_todo.yml +438 -0
  20. data/.simplecov +10 -1
  21. data/Appraisals +285 -15
  22. data/CHANGELOG.md +1243 -377
  23. data/Gemfile +65 -3
  24. data/LICENSE-3rdparty.csv +2 -0
  25. data/README.md +1 -0
  26. data/Rakefile +186 -29
  27. data/bin/ddtracerb +15 -0
  28. data/ddtrace.gemspec +7 -37
  29. data/docker-compose.yml +105 -7
  30. data/docs/DevelopmentGuide.md +28 -0
  31. data/docs/GettingStarted.md +208 -75
  32. data/docs/ProfilingDevelopment.md +88 -0
  33. data/integration/README.md +67 -0
  34. data/integration/apps/rack/.dockerignore +1 -0
  35. data/integration/apps/rack/.envrc.sample +1 -0
  36. data/integration/apps/rack/.gitignore +4 -0
  37. data/integration/apps/rack/.rspec +1 -0
  38. data/integration/apps/rack/Dockerfile +28 -0
  39. data/integration/apps/rack/Dockerfile-ci +11 -0
  40. data/integration/apps/rack/Gemfile +24 -0
  41. data/integration/apps/rack/README.md +93 -0
  42. data/integration/apps/rack/app/acme.rb +80 -0
  43. data/integration/apps/rack/app/datadog.rb +17 -0
  44. data/integration/apps/rack/bin/run +22 -0
  45. data/integration/apps/rack/bin/setup +17 -0
  46. data/integration/apps/rack/bin/test +24 -0
  47. data/integration/apps/rack/config.ru +6 -0
  48. data/integration/apps/rack/config/puma.rb +14 -0
  49. data/integration/apps/rack/config/unicorn.rb +23 -0
  50. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  51. data/integration/apps/rack/docker-compose.yml +78 -0
  52. data/integration/apps/rack/script/build-images +38 -0
  53. data/integration/apps/rack/script/ci +50 -0
  54. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  55. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  56. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  57. data/integration/apps/rails-five/.dockerignore +1 -0
  58. data/integration/apps/rails-five/.env +3 -0
  59. data/integration/apps/rails-five/.envrc.sample +1 -0
  60. data/integration/apps/rails-five/.gitignore +30 -0
  61. data/integration/apps/rails-five/Dockerfile +25 -0
  62. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  63. data/integration/apps/rails-five/Gemfile +104 -0
  64. data/integration/apps/rails-five/README.md +94 -0
  65. data/integration/apps/rails-five/Rakefile +6 -0
  66. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  67. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  68. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  69. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  70. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  71. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  72. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  73. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  74. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  75. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  76. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  77. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  78. data/integration/apps/rails-five/app/models/test.rb +2 -0
  79. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  80. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  81. data/integration/apps/rails-five/bin/bundle +3 -0
  82. data/integration/apps/rails-five/bin/rails +9 -0
  83. data/integration/apps/rails-five/bin/rake +9 -0
  84. data/integration/apps/rails-five/bin/run +24 -0
  85. data/integration/apps/rails-five/bin/setup +27 -0
  86. data/integration/apps/rails-five/bin/spring +17 -0
  87. data/integration/apps/rails-five/bin/test +21 -0
  88. data/integration/apps/rails-five/bin/update +28 -0
  89. data/integration/apps/rails-five/config.ru +5 -0
  90. data/integration/apps/rails-five/config/application.rb +97 -0
  91. data/integration/apps/rails-five/config/boot.rb +4 -0
  92. data/integration/apps/rails-five/config/cable.yml +10 -0
  93. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  94. data/integration/apps/rails-five/config/database.yml +28 -0
  95. data/integration/apps/rails-five/config/environment.rb +5 -0
  96. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  97. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  98. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  99. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  100. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  101. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  102. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  103. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  104. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  105. data/integration/apps/rails-five/config/puma.rb +24 -0
  106. data/integration/apps/rails-five/config/routes.rb +11 -0
  107. data/integration/apps/rails-five/config/spring.rb +6 -0
  108. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  109. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  110. data/integration/apps/rails-five/db/schema.rb +23 -0
  111. data/integration/apps/rails-five/db/seeds.rb +7 -0
  112. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  113. data/integration/apps/rails-five/docker-compose.yml +100 -0
  114. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  115. data/integration/apps/rails-five/log/.keep +0 -0
  116. data/integration/apps/rails-five/public/robots.txt +1 -0
  117. data/integration/apps/rails-five/script/build-images +35 -0
  118. data/integration/apps/rails-five/script/ci +50 -0
  119. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  120. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  121. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  122. data/integration/apps/rails-five/storage/.keep +0 -0
  123. data/integration/apps/rails-five/tmp/.keep +0 -0
  124. data/integration/apps/rails-five/vendor/.keep +0 -0
  125. data/integration/apps/ruby/.dockerignore +1 -0
  126. data/integration/apps/ruby/.envrc.sample +1 -0
  127. data/integration/apps/ruby/.gitignore +2 -0
  128. data/integration/apps/ruby/Dockerfile +25 -0
  129. data/integration/apps/ruby/Dockerfile-ci +11 -0
  130. data/integration/apps/ruby/Gemfile +11 -0
  131. data/integration/apps/ruby/README.md +70 -0
  132. data/integration/apps/ruby/agent.yaml +3 -0
  133. data/integration/apps/ruby/app/datadog.rb +13 -0
  134. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  135. data/integration/apps/ruby/bin/run +20 -0
  136. data/integration/apps/ruby/bin/setup +17 -0
  137. data/integration/apps/ruby/bin/test +21 -0
  138. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  139. data/integration/apps/ruby/docker-compose.yml +63 -0
  140. data/integration/apps/ruby/script/build-images +38 -0
  141. data/integration/apps/ruby/script/ci +50 -0
  142. data/integration/images/agent/Dockerfile +2 -0
  143. data/integration/images/agent/agent.yaml +3 -0
  144. data/integration/images/include/datadog/analyzer.rb +71 -0
  145. data/integration/images/include/datadog/demo_env.rb +101 -0
  146. data/integration/images/include/http-health-check +33 -0
  147. data/integration/images/ruby/2.0/Dockerfile +54 -0
  148. data/integration/images/ruby/2.1/Dockerfile +54 -0
  149. data/integration/images/ruby/2.2/Dockerfile +54 -0
  150. data/integration/images/ruby/2.3/Dockerfile +70 -0
  151. data/integration/images/ruby/2.4/Dockerfile +54 -0
  152. data/integration/images/ruby/2.5/Dockerfile +54 -0
  153. data/integration/images/ruby/2.6/Dockerfile +54 -0
  154. data/integration/images/ruby/2.7/Dockerfile +54 -0
  155. data/integration/images/ruby/3.0/Dockerfile +54 -0
  156. data/integration/images/wrk/Dockerfile +33 -0
  157. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  158. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  159. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  160. data/integration/script/build-images +43 -0
  161. data/lib/ddtrace.rb +9 -5
  162. data/lib/ddtrace/analytics.rb +2 -0
  163. data/lib/ddtrace/auto_instrument.rb +3 -0
  164. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  165. data/lib/ddtrace/buffer.rb +4 -4
  166. data/lib/ddtrace/configuration.rb +121 -26
  167. data/lib/ddtrace/configuration/base.rb +1 -1
  168. data/lib/ddtrace/configuration/components.rb +87 -5
  169. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  170. data/lib/ddtrace/configuration/options.rb +4 -7
  171. data/lib/ddtrace/configuration/settings.rb +48 -3
  172. data/lib/ddtrace/context.rb +5 -6
  173. data/lib/ddtrace/context_provider.rb +0 -1
  174. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  175. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  176. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  177. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  178. data/lib/ddtrace/contrib/action_view/event.rb +1 -5
  179. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  180. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  181. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  182. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  183. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  184. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  185. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  186. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  187. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  188. data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
  189. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  190. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  191. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  192. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  193. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  194. data/lib/ddtrace/contrib/configurable.rb +63 -39
  195. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  196. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -19
  197. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  198. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
  199. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
  200. data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
  201. data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
  202. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  203. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  204. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  205. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  206. data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
  207. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  208. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  209. data/lib/ddtrace/contrib/extensions.rb +53 -3
  210. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  211. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  212. data/lib/ddtrace/contrib/grape/endpoint.rb +37 -26
  213. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  214. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  215. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  216. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  217. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  218. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  219. data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
  220. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  221. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  222. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  223. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  224. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  225. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  226. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  227. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  228. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  229. data/lib/ddtrace/contrib/patchable.rb +18 -7
  230. data/lib/ddtrace/contrib/patcher.rb +9 -6
  231. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  232. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  233. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  234. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  235. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  236. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  237. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  238. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  239. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  240. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  241. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  242. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  243. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  244. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  245. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  246. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  247. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  248. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  249. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  250. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  251. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  252. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  253. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  254. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  255. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  256. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  257. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  258. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  259. data/lib/ddtrace/contrib/registry.rb +2 -2
  260. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  261. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  262. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  263. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  264. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  265. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
  266. data/lib/ddtrace/contrib/rspec/example.rb +24 -10
  267. data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
  268. data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
  269. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
  270. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  271. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  272. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  273. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  274. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  275. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  276. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  277. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  278. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  279. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  280. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  281. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  282. data/lib/ddtrace/correlation.rb +1 -0
  283. data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
  284. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  285. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  286. data/lib/ddtrace/error.rb +2 -0
  287. data/lib/ddtrace/ext/ci.rb +43 -11
  288. data/lib/ddtrace/ext/distributed.rb +1 -1
  289. data/lib/ddtrace/ext/git.rb +0 -1
  290. data/lib/ddtrace/ext/http.rb +1 -1
  291. data/lib/ddtrace/ext/profiling.rb +52 -0
  292. data/lib/ddtrace/ext/runtime.rb +3 -1
  293. data/lib/ddtrace/ext/transport.rb +1 -0
  294. data/lib/ddtrace/forced_tracing.rb +2 -0
  295. data/lib/ddtrace/logger.rb +1 -1
  296. data/lib/ddtrace/metrics.rb +14 -6
  297. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  298. data/lib/ddtrace/opentracer/span.rb +2 -6
  299. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  300. data/lib/ddtrace/patcher.rb +25 -4
  301. data/lib/ddtrace/pin.rb +8 -61
  302. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  303. data/lib/ddtrace/profiling.rb +54 -0
  304. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  305. data/lib/ddtrace/profiling/buffer.rb +41 -0
  306. data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
  307. data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
  308. data/lib/ddtrace/profiling/event.rb +13 -0
  309. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  310. data/lib/ddtrace/profiling/exporter.rb +23 -0
  311. data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
  312. data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
  313. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  314. data/lib/ddtrace/profiling/flush.rb +41 -0
  315. data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
  316. data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
  317. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  318. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  319. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  320. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  321. data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
  322. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  323. data/lib/ddtrace/profiling/pprof/template.rb +114 -0
  324. data/lib/ddtrace/profiling/preload.rb +3 -0
  325. data/lib/ddtrace/profiling/profiler.rb +28 -0
  326. data/lib/ddtrace/profiling/recorder.rb +87 -0
  327. data/lib/ddtrace/profiling/scheduler.rb +84 -0
  328. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  329. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  330. data/lib/ddtrace/profiling/transport/http.rb +122 -0
  331. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  332. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
  333. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  334. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  335. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  336. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  337. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  338. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  339. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  340. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  341. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  342. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  343. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  344. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  345. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  346. data/lib/ddtrace/quantization/http.rb +1 -0
  347. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  348. data/lib/ddtrace/runtime/container.rb +32 -26
  349. data/lib/ddtrace/runtime/identity.rb +8 -0
  350. data/lib/ddtrace/sampler.rb +1 -1
  351. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  352. data/lib/ddtrace/span.rb +7 -7
  353. data/lib/ddtrace/sync_writer.rb +12 -12
  354. data/lib/ddtrace/tasks/exec.rb +48 -0
  355. data/lib/ddtrace/tasks/help.rb +14 -0
  356. data/lib/ddtrace/tracer.rb +28 -5
  357. data/lib/ddtrace/transport/http.rb +15 -8
  358. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  359. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  360. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  361. data/lib/ddtrace/transport/http/builder.rb +7 -1
  362. data/lib/ddtrace/transport/http/env.rb +8 -0
  363. data/lib/ddtrace/transport/http/traces.rb +2 -3
  364. data/lib/ddtrace/transport/io.rb +1 -1
  365. data/lib/ddtrace/transport/io/client.rb +15 -8
  366. data/lib/ddtrace/transport/io/response.rb +1 -3
  367. data/lib/ddtrace/transport/io/traces.rb +6 -0
  368. data/lib/ddtrace/transport/parcel.rb +4 -0
  369. data/lib/ddtrace/transport/traces.rb +18 -1
  370. data/lib/ddtrace/utils/compression.rb +27 -0
  371. data/lib/ddtrace/utils/object_set.rb +41 -0
  372. data/lib/ddtrace/utils/only_once.rb +40 -0
  373. data/lib/ddtrace/utils/sequence.rb +17 -0
  374. data/lib/ddtrace/utils/string_table.rb +45 -0
  375. data/lib/ddtrace/utils/time.rb +32 -1
  376. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  377. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  378. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  379. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  380. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  381. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  382. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  383. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  384. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  385. data/lib/ddtrace/version.rb +3 -1
  386. data/lib/ddtrace/workers.rb +5 -0
  387. data/lib/ddtrace/workers/async.rb +11 -3
  388. data/lib/ddtrace/workers/loop.rb +17 -3
  389. data/lib/ddtrace/workers/polling.rb +1 -0
  390. data/lib/ddtrace/workers/queue.rb +1 -0
  391. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  392. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  393. data/lib/ddtrace/writer.rb +7 -4
  394. metadata +224 -342
  395. data/lib/ddtrace/augmentation.rb +0 -13
  396. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  397. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  398. data/lib/ddtrace/augmentation/shim.rb +0 -102
  399. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  400. data/lib/ddtrace/monkey.rb +0 -58
data/.simplecov CHANGED
@@ -1,13 +1,22 @@
1
+ # Enable branch coverage reporting.
2
+ # SimpleCov only supports branch coverage in
3
+ # Ruby >= 2.5.
4
+ SimpleCov.enable_coverage :branch if RUBY_VERSION >= '2.5.0'
5
+
6
+ # Categorize SimpleCov report, for easier reading
1
7
  SimpleCov.add_group 'contrib', '/lib/ddtrace/contrib'
2
8
  SimpleCov.add_group 'transport', '/lib/ddtrace/transport'
3
9
  SimpleCov.add_group 'spec', '/spec/'
4
10
 
11
+ # Exclude code not maintained by this project
12
+ SimpleCov.add_filter %r{/vendor/}
13
+
5
14
  SimpleCov.coverage_dir ENV.fetch('COVERAGE_DIR', 'coverage')
6
15
 
7
16
  # Each test run requires its own unique command_name.
8
17
  # When running `rake spec:test_name`, the test process doesn't have access to the
9
18
  # rake task process, so we have come up with unique values ourselves.
10
- #
19
+ #
11
20
  # The current approach is to combine the ruby engine (ruby-2.7,jruby-9.2),
12
21
  # program name (rspec/test), command line arguments (--pattern spec/**/*_spec.rb),
13
22
  # and the loaded gemset.
data/Appraisals CHANGED
@@ -39,7 +39,10 @@ elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
39
39
  gem 'activerecord-mysql-adapter', platform: :ruby
40
40
  gem 'activerecord-jdbcmysql-adapter', platform: :jruby
41
41
  gem 'rack-cache', '1.7.1'
42
+ gem 'sqlite3', '~> 1.3.5'
42
43
  gem 'lograge', '< 0.4'
44
+ gem 'makara', '< 0.5.0' # >= 0.5.0 contain Ruby 2.3+ syntax
45
+ gem 'safe_yaml' # Required for makara, as YAML.safe_load is not available in Ruby 2.0
43
46
  end
44
47
 
45
48
  appraise 'rails32-postgres' do
@@ -86,6 +89,8 @@ elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
86
89
  gem 'excon'
87
90
  gem 'hiredis'
88
91
  gem 'http'
92
+ gem 'httpclient'
93
+ gem 'makara', '< 0.5.0' # >= 0.5.0 contain Ruby 2.3+ syntax
89
94
  gem 'mongo', '< 2.5'
90
95
  gem 'mysql2', '0.3.21', platform: :ruby
91
96
  gem 'pg', '< 1.0', platform: :ruby
@@ -97,6 +102,7 @@ elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
97
102
  gem 'rest-client'
98
103
  gem 'resque', '< 2.0'
99
104
  gem 'rspec', '>= 3.0.0'
105
+ gem 'safe_yaml' # Required for makara, as YAML.safe_load is not available in Ruby 2.0
100
106
  gem 'sequel', '~> 4.0', '< 4.37'
101
107
  gem 'sidekiq', '~> 3.5.4'
102
108
  gem 'sinatra', '1.4.5'
@@ -105,6 +111,10 @@ elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
105
111
  gem 'timers', '< 4.2'
106
112
  gem 'typhoeus'
107
113
  end
114
+
115
+ appraise 'core-old' do
116
+ gem 'dogstatsd-ruby', '~> 4'
117
+ end
108
118
  end
109
119
  elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
110
120
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.0')
@@ -135,7 +145,9 @@ elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
135
145
  gem 'activerecord-mysql-adapter', platform: :ruby
136
146
  gem 'activerecord-jdbcmysql-adapter', platform: :jruby
137
147
  gem 'rack-cache', '1.7.1'
148
+ gem 'sqlite3', '~> 1.3.5'
138
149
  gem 'lograge', '< 0.4'
150
+ gem 'makara', '< 0.5.0' # >= 0.5.0 contain Ruby 2.3+ syntax
139
151
  end
140
152
 
141
153
  appraise 'rails32-postgres' do
@@ -209,6 +221,8 @@ elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
209
221
  gem 'excon'
210
222
  gem 'hiredis'
211
223
  gem 'http'
224
+ gem 'httpclient'
225
+ gem 'makara', '< 0.5.0' # >= 0.5.0 contain Ruby 2.3+ syntax
212
226
  gem 'mongo', '< 2.5'
213
227
  gem 'mysql2', '0.3.21', platform: :ruby
214
228
  gem 'pg', '< 1.0', platform: :ruby
@@ -230,6 +244,10 @@ elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
230
244
  gem 'timers', '< 4.2'
231
245
  gem 'typhoeus'
232
246
  end
247
+
248
+ appraise 'core-old' do
249
+ gem 'dogstatsd-ruby', '~> 4'
250
+ end
233
251
  end
234
252
  elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
235
253
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
@@ -260,6 +278,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
260
278
  gem 'activerecord-mysql-adapter', platform: :ruby
261
279
  gem 'activerecord-jdbcmysql-adapter', platform: :jruby
262
280
  gem 'rack-cache', '1.7.1'
281
+ gem 'sqlite3', '~> 1.3.5'
263
282
  gem 'lograge', '< 0.4'
264
283
  end
265
284
 
@@ -334,6 +353,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
334
353
  gem 'mysql2', '< 1', platform: :ruby
335
354
  gem 'sprockets', '< 4'
336
355
  gem 'lograge'
356
+ gem 'mimemagic', '0.3.9' # Pinned until https://github.com/mimemagicrb/mimemagic/issues/142 is resolved.
337
357
  end
338
358
 
339
359
  appraise 'rails5-postgres' do
@@ -341,6 +361,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
341
361
  gem 'pg', '< 1.0', platform: :ruby
342
362
  gem 'sprockets', '< 4'
343
363
  gem 'lograge'
364
+ gem 'mimemagic', '0.3.9' # Pinned until https://github.com/mimemagicrb/mimemagic/issues/142 is resolved.
344
365
  end
345
366
 
346
367
  appraise 'rails5-postgres-redis' do
@@ -349,6 +370,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
349
370
  gem 'redis', '>= 4.0.1'
350
371
  gem 'sprockets', '< 4'
351
372
  gem 'lograge'
373
+ gem 'mimemagic', '0.3.9' # Pinned until https://github.com/mimemagicrb/mimemagic/issues/142 is resolved.
352
374
  end
353
375
 
354
376
  appraise 'rails5-postgres-redis-activesupport' do
@@ -357,6 +379,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
357
379
  gem 'redis', '>= 4.0.1'
358
380
  gem 'sprockets', '< 4'
359
381
  gem 'lograge'
382
+ gem 'mimemagic', '0.3.9' # Pinned until https://github.com/mimemagicrb/mimemagic/issues/142 is resolved.
360
383
  end
361
384
 
362
385
  appraise 'rails5-postgres-sidekiq' do
@@ -366,6 +389,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
366
389
  gem 'activejob'
367
390
  gem 'sprockets', '< 4'
368
391
  gem 'lograge'
392
+ gem 'mimemagic', '0.3.9' # Pinned until https://github.com/mimemagicrb/mimemagic/issues/142 is resolved.
369
393
  end
370
394
 
371
395
  appraise 'contrib' do
@@ -385,12 +409,15 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
385
409
  gem 'excon'
386
410
  gem 'faraday'
387
411
  gem 'grape'
388
- gem 'graphql', '< 1.9.4'
389
- gem 'grpc', '~> 1.21.0' # Last version to support Ruby < 2.3
412
+ gem 'graphql', '>= 1.12.0'
413
+ gem 'grpc', '~> 1.19.0' # Last version to support Ruby < 2.3 & google-protobuf < 3.7
390
414
  gem 'hiredis'
391
415
  gem 'http'
416
+ gem 'httpclient'
417
+ gem 'makara', '< 0.5.0' # >= 0.5.0 contain Ruby 2.3+ syntax
392
418
  gem 'mongo', '>= 2.8.0'
393
419
  gem 'mysql2', '< 0.5', platform: :ruby
420
+ gem 'qless'
394
421
  gem 'racecar', '>= 0.3.5'
395
422
  gem 'rack', '< 2.1.0' # Locked due to grape incompatibility: https://github.com/ruby-grape/grape/issues/1980
396
423
  gem 'rack-test'
@@ -410,6 +437,10 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
410
437
  gem 'typhoeus'
411
438
  gem 'que', '>= 1.0.0.beta2'
412
439
  end
440
+
441
+ appraise 'core-old' do
442
+ gem 'dogstatsd-ruby', '~> 4'
443
+ end
413
444
  end
414
445
  elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
415
446
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4.0')
@@ -440,6 +471,7 @@ elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
440
471
  gem 'activerecord-mysql-adapter', platform: :ruby
441
472
  gem 'activerecord-jdbcmysql-adapter', platform: :jruby
442
473
  gem 'rack-cache', '1.7.1'
474
+ gem 'sqlite3', '~> 1.3.5'
443
475
  gem 'lograge', '< 0.4'
444
476
  end
445
477
 
@@ -575,15 +607,18 @@ elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
575
607
  gem 'excon'
576
608
  gem 'faraday'
577
609
  gem 'grape'
578
- gem 'graphql'
610
+ gem 'graphql', '>= 1.12.0'
579
611
  gem 'grpc'
580
612
  gem 'google-protobuf', '~> 3.11.0' # Last version to support Ruby < 2.5
581
613
  gem 'hiredis'
582
614
  gem 'http'
615
+ gem 'httpclient'
616
+ gem 'makara'
583
617
  gem 'mongo', '>= 2.8.0'
584
618
  gem 'mysql2', '< 0.5', platform: :ruby
585
619
  gem 'pg', platform: :ruby
586
620
  gem 'presto-client', '>= 0.5.14'
621
+ gem 'qless'
587
622
  gem 'racecar', '>= 0.3.5'
588
623
  gem 'rack', '< 2.1.0' # Locked due to grape incompatibility: https://github.com/ruby-grape/grape/issues/1980
589
624
  gem 'rack-test'
@@ -607,6 +642,10 @@ elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
607
642
  appraise 'contrib-old' do
608
643
  gem 'faraday', '0.17'
609
644
  end
645
+
646
+ appraise 'core-old' do
647
+ gem 'dogstatsd-ruby', '~> 4'
648
+ end
610
649
  end
611
650
  elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION) \
612
651
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.5.0')
@@ -678,15 +717,18 @@ elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION) \
678
717
  gem 'excon'
679
718
  gem 'faraday'
680
719
  gem 'grape'
681
- gem 'graphql'
720
+ gem 'graphql', '>= 1.12.0'
682
721
  gem 'grpc'
683
722
  gem 'google-protobuf', '~> 3.11.0' # Last version to support Ruby < 2.5
684
723
  gem 'hiredis'
685
724
  gem 'http'
725
+ gem 'httpclient'
726
+ gem 'makara'
686
727
  gem 'mongo', '>= 2.8.0'
687
728
  gem 'mysql2', '< 0.5', platform: :ruby
688
729
  gem 'pg', platform: :ruby
689
730
  gem 'presto-client', '>= 0.5.14'
731
+ gem 'qless'
690
732
  gem 'racecar', '>= 0.3.5'
691
733
  gem 'rack'
692
734
  gem 'rack-test'
@@ -710,6 +752,10 @@ elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION) \
710
752
  appraise 'contrib-old' do
711
753
  gem 'faraday', '0.17'
712
754
  end
755
+
756
+ appraise 'core-old' do
757
+ gem 'dogstatsd-ruby', '~> 4'
758
+ end
713
759
  end
714
760
  elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
715
761
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.6.0')
@@ -719,6 +765,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
719
765
  gem 'activerecord-jdbcmysql-adapter', platform: :jruby
720
766
  gem 'sprockets', '< 4'
721
767
  gem 'lograge'
768
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
722
769
  end
723
770
 
724
771
  appraise 'rails5-postgres' do
@@ -727,6 +774,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
727
774
  gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
728
775
  gem 'sprockets', '< 4'
729
776
  gem 'lograge'
777
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
730
778
  end
731
779
 
732
780
  appraise 'rails5-postgres-redis' do
@@ -736,6 +784,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
736
784
  gem 'redis', '>= 4.0.1'
737
785
  gem 'sprockets', '< 4'
738
786
  gem 'lograge'
787
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
739
788
  end
740
789
 
741
790
  appraise 'rails5-postgres-redis-activesupport' do
@@ -745,6 +794,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
745
794
  gem 'redis', '>= 4.0.1'
746
795
  gem 'sprockets', '< 4'
747
796
  gem 'lograge'
797
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
748
798
  end
749
799
 
750
800
  appraise 'rails5-postgres-sidekiq' do
@@ -755,6 +805,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
755
805
  gem 'activejob'
756
806
  gem 'sprockets', '< 4'
757
807
  gem 'lograge'
808
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
758
809
  end
759
810
 
760
811
  appraise 'rails6-mysql2' do
@@ -763,6 +814,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
763
814
  gem 'activerecord-jdbcmysql-adapter', '>= 60', platform: :jruby # try remove >= 60
764
815
  gem 'sprockets', '< 4'
765
816
  gem 'lograge'
817
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
766
818
  end
767
819
 
768
820
  appraise 'rails6-postgres' do
@@ -771,6 +823,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
771
823
  gem 'activerecord-jdbcpostgresql-adapter', '>= 60', platform: :jruby
772
824
  gem 'sprockets', '< 4'
773
825
  gem 'lograge'
826
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
774
827
  end
775
828
 
776
829
  appraise 'rails6-postgres-redis' do
@@ -780,6 +833,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
780
833
  gem 'redis', '>= 4.0.1'
781
834
  gem 'sprockets', '< 4'
782
835
  gem 'lograge'
836
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
783
837
  end
784
838
 
785
839
  appraise 'rails6-postgres-redis-activesupport' do
@@ -789,6 +843,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
789
843
  gem 'redis', '>= 4.0.1'
790
844
  gem 'sprockets', '< 4'
791
845
  gem 'lograge'
846
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
792
847
  end
793
848
 
794
849
  appraise 'rails6-postgres-sidekiq' do
@@ -799,6 +854,45 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
799
854
  gem 'activejob'
800
855
  gem 'sprockets', '< 4'
801
856
  gem 'lograge'
857
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
858
+ end
859
+
860
+ appraise 'rails61-mysql2' do
861
+ gem 'rails', '~> 6.1.0'
862
+ gem 'mysql2', '~> 0.5', platform: :ruby
863
+ gem 'activerecord-jdbcmysql-adapter', '>= 61', platform: :jruby
864
+ gem 'sprockets', '< 4'
865
+ gem 'lograge', '~> 0.11'
866
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
867
+ end
868
+
869
+ appraise 'rails61-postgres' do
870
+ gem 'rails', '~> 6.1.0'
871
+ gem 'pg', '>= 1.1', platform: :ruby
872
+ gem 'activerecord-jdbcpostgresql-adapter', '>= 61', platform: :jruby
873
+ gem 'sprockets', '< 4'
874
+ gem 'lograge', '~> 0.11'
875
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
876
+ end
877
+
878
+ appraise 'rails61-postgres-redis' do
879
+ gem 'rails', '~> 6.1.0'
880
+ gem 'pg', '>= 1.1', platform: :ruby
881
+ gem 'activerecord-jdbcpostgresql-adapter', '>= 61', platform: :jruby
882
+ gem 'redis', '>= 4.2.5'
883
+ gem 'sprockets', '< 4'
884
+ gem 'lograge', '~> 0.11'
885
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
886
+ end
887
+
888
+ appraise 'rails61-postgres-sidekiq' do
889
+ gem 'rails', '~> 6.1.0'
890
+ gem 'pg', '>= 1.1', platform: :ruby
891
+ gem 'activerecord-jdbcpostgresql-adapter', '>= 61', platform: :jruby
892
+ gem 'sidekiq', '>= 6.1.2'
893
+ gem 'sprockets', '< 4'
894
+ gem 'lograge', '~> 0.11'
895
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
802
896
  end
803
897
 
804
898
  appraise 'resque2-redis3' do
@@ -829,16 +923,20 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
829
923
  gem 'excon'
830
924
  gem 'faraday'
831
925
  gem 'grape'
832
- gem 'graphql'
926
+ gem 'graphql', '>= 1.12.0'
833
927
  gem 'grpc', platform: :ruby
834
928
  gem 'hiredis'
835
929
  gem 'http'
930
+ gem 'httpclient'
931
+ gem 'i18n', '1.8.7', platform: :jruby # Removal pending: https://github.com/ruby-i18n/i18n/issues/555#issuecomment-772112169
932
+ gem 'makara'
836
933
  gem 'mongo', '>= 2.8.0'
837
- gem 'mysql2', '< 0.5', platform: :ruby
838
- gem 'activerecord-jdbcmysql-adapter', platform: :jruby
934
+ gem 'mysql2', '< 1', platform: :ruby
935
+ gem 'activerecord-jdbcmysql-adapter', '>= 60.2', platform: :jruby
839
936
  gem 'pg', platform: :ruby
840
- gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
937
+ gem 'activerecord-jdbcpostgresql-adapter', '>= 60.2', platform: :jruby
841
938
  gem 'presto-client', '>= 0.5.14'
939
+ gem 'qless', (RUBY_PLATFORM == 'java' ? '0.10.0' : '>= 0') # Newer releases require `rusage`, which is not available for JRuby
842
940
  gem 'racecar', '>= 0.3.5'
843
941
  gem 'rack'
844
942
  gem 'rack-test'
@@ -854,6 +952,7 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
854
952
  gem 'sinatra'
855
953
  gem 'sneakers', '>= 2.12.0'
856
954
  gem 'sqlite3', '~> 1.4.1', platform: :ruby
955
+ gem 'jdbc-sqlite3', '>= 3.28', platform: :jruby
857
956
  gem 'sucker_punch'
858
957
  gem 'typhoeus'
859
958
  gem 'que', '>= 1.0.0.beta2'
@@ -862,6 +961,10 @@ elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
862
961
  appraise 'contrib-old' do
863
962
  gem 'faraday', '0.17'
864
963
  end
964
+
965
+ appraise 'core-old' do
966
+ gem 'dogstatsd-ruby', '~> 4'
967
+ end
865
968
  elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
866
969
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
867
970
  if RUBY_PLATFORM != 'java'
@@ -943,6 +1046,36 @@ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
943
1046
  gem 'lograge'
944
1047
  end
945
1048
 
1049
+ appraise 'rails61-mysql2' do
1050
+ gem 'rails', '~> 6.1.0'
1051
+ gem 'mysql2', '~> 0.5', platform: :ruby
1052
+ gem 'sprockets', '< 4'
1053
+ gem 'lograge', '~> 0.11'
1054
+ end
1055
+
1056
+ appraise 'rails61-postgres' do
1057
+ gem 'rails', '~> 6.1.0'
1058
+ gem 'pg', '>= 1.1', platform: :ruby
1059
+ gem 'sprockets', '< 4'
1060
+ gem 'lograge', '~> 0.11'
1061
+ end
1062
+
1063
+ appraise 'rails61-postgres-redis' do
1064
+ gem 'rails', '~> 6.1.0'
1065
+ gem 'pg', '>= 1.1', platform: :ruby
1066
+ gem 'redis', '>= 4.2.5'
1067
+ gem 'sprockets', '< 4'
1068
+ gem 'lograge', '~> 0.11'
1069
+ end
1070
+
1071
+ appraise 'rails61-postgres-sidekiq' do
1072
+ gem 'rails', '~> 6.1.0'
1073
+ gem 'pg', '>= 1.1', platform: :ruby
1074
+ gem 'sidekiq', '>= 6.1.2'
1075
+ gem 'sprockets', '< 4'
1076
+ gem 'lograge', '~> 0.11'
1077
+ end
1078
+
946
1079
  appraise 'resque2-redis3' do
947
1080
  gem 'redis', '< 4.0'
948
1081
  gem 'resque', '>= 2.0'
@@ -971,14 +1104,17 @@ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
971
1104
  gem 'excon'
972
1105
  gem 'faraday'
973
1106
  gem 'grape'
974
- gem 'graphql'
1107
+ gem 'graphql', '>= 1.12.0'
975
1108
  gem 'grpc'
976
1109
  gem 'hiredis'
977
1110
  gem 'http'
1111
+ gem 'httpclient'
1112
+ gem 'makara'
978
1113
  gem 'mongo', '>= 2.8.0'
979
- gem 'mysql2', '< 0.5', platform: :ruby
1114
+ gem 'mysql2', '< 1', platform: :ruby
980
1115
  gem 'pg', platform: :ruby
981
1116
  gem 'presto-client', '>= 0.5.14'
1117
+ gem 'qless'
982
1118
  gem 'racecar', '>= 0.3.5'
983
1119
  gem 'rack'
984
1120
  gem 'rack-test'
@@ -1002,12 +1138,17 @@ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
1002
1138
  appraise 'contrib-old' do
1003
1139
  gem 'faraday', '0.17'
1004
1140
  end
1141
+
1142
+ appraise 'core-old' do
1143
+ gem 'dogstatsd-ruby', '~> 4'
1144
+ end
1005
1145
  end
1006
- elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
1146
+ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION) \
1147
+ && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.0.0')
1007
1148
  if RUBY_PLATFORM != 'java'
1008
1149
  appraise 'rails5-mysql2' do
1009
1150
  gem 'rails', '~> 5.2.1'
1010
- gem 'mysql2', '< 0.5', platform: :ruby
1151
+ gem 'mysql2', '< 1', platform: :ruby
1011
1152
  gem 'sprockets', '< 4'
1012
1153
  gem 'lograge'
1013
1154
  end
@@ -1048,7 +1189,7 @@ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
1048
1189
 
1049
1190
  appraise 'rails6-mysql2' do
1050
1191
  gem 'rails', '~> 6.0.0'
1051
- gem 'mysql2', '< 0.6', platform: :ruby
1192
+ gem 'mysql2', '< 1', platform: :ruby
1052
1193
  gem 'sprockets', '< 4'
1053
1194
  gem 'lograge'
1054
1195
  end
@@ -1087,6 +1228,36 @@ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
1087
1228
  gem 'lograge'
1088
1229
  end
1089
1230
 
1231
+ appraise 'rails61-mysql2' do
1232
+ gem 'rails', '~> 6.1.0'
1233
+ gem 'mysql2', '~> 0.5', platform: :ruby
1234
+ gem 'sprockets', '< 4'
1235
+ gem 'lograge', '~> 0.11'
1236
+ end
1237
+
1238
+ appraise 'rails61-postgres' do
1239
+ gem 'rails', '~> 6.1.0'
1240
+ gem 'pg', '>= 1.1', platform: :ruby
1241
+ gem 'sprockets', '< 4'
1242
+ gem 'lograge', '~> 0.11'
1243
+ end
1244
+
1245
+ appraise 'rails61-postgres-redis' do
1246
+ gem 'rails', '~> 6.1.0'
1247
+ gem 'pg', '>= 1.1', platform: :ruby
1248
+ gem 'redis', '>= 4.2.5'
1249
+ gem 'sprockets', '< 4'
1250
+ gem 'lograge', '~> 0.11'
1251
+ end
1252
+
1253
+ appraise 'rails61-postgres-sidekiq' do
1254
+ gem 'rails', '~> 6.1.0'
1255
+ gem 'pg', '>= 1.1', platform: :ruby
1256
+ gem 'sidekiq', '>= 6.1.2'
1257
+ gem 'sprockets', '< 4'
1258
+ gem 'lograge', '~> 0.11'
1259
+ end
1260
+
1090
1261
  appraise 'resque2-redis3' do
1091
1262
  gem 'redis', '< 4.0'
1092
1263
  gem 'resque', '>= 2.0'
@@ -1114,14 +1285,17 @@ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
1114
1285
  gem 'ethon'
1115
1286
  gem 'excon'
1116
1287
  gem 'grape'
1117
- gem 'graphql'
1288
+ gem 'graphql', '>= 1.12.0'
1118
1289
  gem 'grpc'
1119
1290
  gem 'hiredis'
1120
1291
  gem 'http'
1292
+ gem 'httpclient'
1293
+ gem 'makara'
1121
1294
  gem 'mongo', '>= 2.8.0'
1122
- gem 'mysql2', '< 0.5', platform: :ruby
1295
+ gem 'mysql2', '< 1', platform: :ruby
1123
1296
  gem 'pg', platform: :ruby
1124
1297
  gem 'presto-client', '>= 0.5.14'
1298
+ gem 'qless'
1125
1299
  gem 'racecar', '>= 0.3.5'
1126
1300
  gem 'rack'
1127
1301
  gem 'rack-test'
@@ -1145,5 +1319,101 @@ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
1145
1319
  appraise 'contrib-old' do
1146
1320
  gem 'faraday', '0.17'
1147
1321
  end
1322
+
1323
+ appraise 'core-old' do
1324
+ gem 'dogstatsd-ruby', '~> 4'
1325
+ end
1326
+ end
1327
+ elsif Gem::Version.new('3.0.0') <= Gem::Version.new(RUBY_VERSION)
1328
+ appraise 'rails61-mysql2' do
1329
+ gem 'rails', '~> 6.1.0'
1330
+ gem 'mysql2', '~> 0.5', platform: :ruby
1331
+ gem 'sprockets', '< 4'
1332
+ gem 'lograge', '~> 0.11'
1333
+ end
1334
+
1335
+ appraise 'rails61-postgres' do
1336
+ gem 'rails', '~> 6.1.0'
1337
+ gem 'pg', '>= 1.1', platform: :ruby
1338
+ gem 'sprockets', '< 4'
1339
+ gem 'lograge', '~> 0.11'
1340
+ end
1341
+
1342
+ appraise 'rails61-postgres-redis' do
1343
+ gem 'rails', '~> 6.1.0'
1344
+ gem 'pg', '>= 1.1', platform: :ruby
1345
+ gem 'redis', '>= 4.2.5'
1346
+ gem 'sprockets', '< 4'
1347
+ gem 'lograge', '~> 0.11'
1348
+ end
1349
+
1350
+ appraise 'rails61-postgres-sidekiq' do
1351
+ gem 'rails', '~> 6.1.0'
1352
+ gem 'pg', '>= 1.1', platform: :ruby
1353
+ gem 'sidekiq', '>= 6.1.2'
1354
+ gem 'sprockets', '< 4'
1355
+ gem 'lograge', '~> 0.11'
1356
+ end
1357
+
1358
+ appraise 'resque2-redis3' do
1359
+ gem 'redis', '< 4.0'
1360
+ gem 'resque', '>= 2.0'
1361
+ end
1362
+
1363
+ appraise 'resque2-redis4' do
1364
+ gem 'redis', '>= 4.0'
1365
+ gem 'resque', '>= 2.0'
1366
+ end
1367
+
1368
+ (3..5).each { |v| gem_cucumber(v) }
1369
+
1370
+ appraise 'contrib' do
1371
+ gem 'actionpack'
1372
+ gem 'actionview'
1373
+ gem 'active_model_serializers', '>= 0.10.0'
1374
+ gem 'activerecord'
1375
+ gem 'aws-sdk'
1376
+ gem 'concurrent-ruby'
1377
+ gem 'cucumber'
1378
+ gem 'dalli'
1379
+ gem 'delayed_job'
1380
+ gem 'delayed_job_active_record'
1381
+ gem 'elasticsearch-transport'
1382
+ gem 'ethon'
1383
+ gem 'excon'
1384
+ gem 'grape'
1385
+ gem 'graphql', '>= 1.12.0'
1386
+ # gem 'grpc' # Pending 3.0 support by transient protobuf dependency https://github.com/protocolbuffers/protobuf/issues/7922
1387
+ gem 'hiredis'
1388
+ gem 'http'
1389
+ gem 'httpclient'
1390
+ gem 'makara', '>= 0.6.0.pre' # Ruby 3 requires >= 0.6.0, which is currently in pre-release: https://rubygems.org/gems/makara/versions
1391
+ gem 'mongo', '>= 2.8.0'
1392
+ gem 'mysql2', '>= 0.5.3', platform: :ruby
1393
+ gem 'pg', '>= 1.1', platform: :ruby
1394
+ gem 'presto-client', '>= 0.5.14'
1395
+ gem 'qless'
1396
+ # gem 'racecar', '>= 0.3.5' # Pending release of our fix: https://github.com/appsignal/rdkafka-ruby/pull/144
1397
+ gem 'rack'
1398
+ gem 'rack-test'
1399
+ gem 'rake', '>= 12.3'
1400
+ gem 'redis', '< 4.0'
1401
+ gem 'rest-client'
1402
+ gem 'resque'
1403
+ gem 'ruby-kafka', '>= 0.7.10'
1404
+ gem 'rspec', '>= 3.0.0'
1405
+ gem 'sequel'
1406
+ gem 'shoryuken'
1407
+ gem 'sidekiq'
1408
+ gem 'sinatra'
1409
+ gem 'sneakers', '>= 2.12.0'
1410
+ gem 'sqlite3', '>= 1.4.2'
1411
+ gem 'sucker_punch'
1412
+ gem 'typhoeus'
1413
+ gem 'que', '>= 1.0.0.beta2'
1414
+ end
1415
+
1416
+ appraise 'core-old' do
1417
+ gem 'dogstatsd-ruby', '~> 4'
1148
1418
  end
1149
1419
  end