ddtrace 0.13.0 → 0.47.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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +598 -381
- data/.circleci/images/primary/Dockerfile-2.0.0 +6 -2
- data/.circleci/images/primary/Dockerfile-2.1.10 +6 -2
- data/.circleci/images/primary/Dockerfile-2.2.10 +6 -2
- data/.circleci/images/primary/Dockerfile-2.3.8 +75 -0
- data/.circleci/images/primary/Dockerfile-2.4.6 +73 -0
- data/.circleci/images/primary/{Dockerfile-2.3.7 → Dockerfile-2.5.6} +2 -2
- data/.circleci/images/primary/{Dockerfile-2.4.4 → Dockerfile-2.6.4} +2 -2
- data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
- data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
- data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +78 -0
- data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +73 -0
- data/.circleci/images/primary/{Dockerfile-1.9.3 → Dockerfile-truffleruby-21.0.0} +6 -2
- data/.env +5 -2
- data/.github/CODEOWNERS +1 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.gitignore +2 -0
- data/.gitlab-ci.yml +27 -0
- data/.rubocop.yml +270 -6
- data/.rubocop_todo.yml +397 -0
- data/.simplecov +47 -0
- data/Appraisals +933 -127
- data/CHANGELOG.md +2106 -97
- data/CONTRIBUTING.md +85 -0
- data/Gemfile +55 -2
- data/LICENSE +4 -22
- data/LICENSE-3rdparty.csv +2 -0
- data/LICENSE.Apache +200 -0
- data/LICENSE.BSD3 +24 -0
- data/NOTICE +4 -0
- data/README.md +5 -34
- data/Rakefile +825 -351
- data/benchmarks/postgres_database.yml +9 -0
- data/benchmarks/sidekiq_test.rb +154 -0
- data/ddtrace.gemspec +8 -17
- data/docker-compose.yml +260 -47
- data/docs/DevelopmentGuide.md +249 -0
- data/docs/GettingStarted.md +1435 -290
- data/integration/README.md +68 -0
- data/integration/apps/rack/.dockerignore +1 -0
- data/integration/apps/rack/.envrc.sample +1 -0
- data/integration/apps/rack/.gitignore +4 -0
- data/integration/apps/rack/.rspec +1 -0
- data/integration/apps/rack/Dockerfile +25 -0
- data/integration/apps/rack/Dockerfile-ci +11 -0
- data/integration/apps/rack/Gemfile +24 -0
- data/integration/apps/rack/README.md +93 -0
- data/integration/apps/rack/app/acme.rb +80 -0
- data/integration/apps/rack/app/datadog.rb +17 -0
- data/integration/apps/rack/bin/run +22 -0
- data/integration/apps/rack/bin/setup +17 -0
- data/integration/apps/rack/bin/test +24 -0
- data/integration/apps/rack/config.ru +6 -0
- data/integration/apps/rack/config/puma.rb +14 -0
- data/integration/apps/rack/config/unicorn.rb +23 -0
- data/integration/apps/rack/docker-compose.ci.yml +62 -0
- data/integration/apps/rack/docker-compose.yml +78 -0
- data/integration/apps/rack/script/build-images +38 -0
- data/integration/apps/rack/script/ci +50 -0
- data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rack/spec/spec_helper.rb +16 -0
- data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/.dockerignore +1 -0
- data/integration/apps/rails-five/.env +3 -0
- data/integration/apps/rails-five/.envrc.sample +1 -0
- data/integration/apps/rails-five/.gitignore +30 -0
- data/integration/apps/rails-five/Dockerfile +25 -0
- data/integration/apps/rails-five/Dockerfile-ci +11 -0
- data/integration/apps/rails-five/Gemfile +104 -0
- data/integration/apps/rails-five/README.md +94 -0
- data/integration/apps/rails-five/Rakefile +6 -0
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
- data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
- data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
- data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
- data/integration/apps/rails-five/app/models/application_record.rb +3 -0
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +2 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
- data/integration/apps/rails-five/bin/bundle +3 -0
- data/integration/apps/rails-five/bin/rails +9 -0
- data/integration/apps/rails-five/bin/rake +9 -0
- data/integration/apps/rails-five/bin/run +24 -0
- data/integration/apps/rails-five/bin/setup +27 -0
- data/integration/apps/rails-five/bin/spring +17 -0
- data/integration/apps/rails-five/bin/test +21 -0
- data/integration/apps/rails-five/bin/update +28 -0
- data/integration/apps/rails-five/config.ru +5 -0
- data/integration/apps/rails-five/config/application.rb +97 -0
- data/integration/apps/rails-five/config/boot.rb +4 -0
- data/integration/apps/rails-five/config/cable.yml +10 -0
- data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
- data/integration/apps/rails-five/config/database.yml +28 -0
- data/integration/apps/rails-five/config/environment.rb +5 -0
- data/integration/apps/rails-five/config/environments/development.rb +51 -0
- data/integration/apps/rails-five/config/environments/production.rb +82 -0
- data/integration/apps/rails-five/config/environments/test.rb +43 -0
- data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
- data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
- data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
- data/integration/apps/rails-five/config/locales/en.yml +33 -0
- data/integration/apps/rails-five/config/puma.rb +24 -0
- data/integration/apps/rails-five/config/routes.rb +11 -0
- data/integration/apps/rails-five/config/spring.rb +6 -0
- data/integration/apps/rails-five/config/unicorn.rb +29 -0
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
- data/integration/apps/rails-five/db/schema.rb +23 -0
- data/integration/apps/rails-five/db/seeds.rb +7 -0
- data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
- data/integration/apps/rails-five/docker-compose.yml +100 -0
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +1 -0
- data/integration/apps/rails-five/script/build-images +35 -0
- data/integration/apps/rails-five/script/ci +50 -0
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
- data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/ruby/.dockerignore +1 -0
- data/integration/apps/ruby/.envrc.sample +1 -0
- data/integration/apps/ruby/.gitignore +2 -0
- data/integration/apps/ruby/Dockerfile +25 -0
- data/integration/apps/ruby/Dockerfile-ci +11 -0
- data/integration/apps/ruby/Gemfile +11 -0
- data/integration/apps/ruby/README.md +70 -0
- data/integration/apps/ruby/agent.yaml +3 -0
- data/integration/apps/ruby/app/datadog.rb +13 -0
- data/integration/apps/ruby/app/fibonacci.rb +58 -0
- data/integration/apps/ruby/bin/run +20 -0
- data/integration/apps/ruby/bin/setup +17 -0
- data/integration/apps/ruby/bin/test +21 -0
- data/integration/apps/ruby/docker-compose.ci.yml +51 -0
- data/integration/apps/ruby/docker-compose.yml +63 -0
- data/integration/apps/ruby/script/build-images +38 -0
- data/integration/apps/ruby/script/ci +50 -0
- data/integration/images/agent/Dockerfile +2 -0
- data/integration/images/agent/agent.yaml +3 -0
- data/integration/images/include/datadog/analyzer.rb +71 -0
- data/integration/images/include/datadog/demo_env.rb +101 -0
- data/integration/images/include/http-health-check +33 -0
- data/integration/images/ruby/2.0/Dockerfile +54 -0
- data/integration/images/ruby/2.1/Dockerfile +54 -0
- data/integration/images/ruby/2.2/Dockerfile +54 -0
- data/integration/images/ruby/2.3/Dockerfile +70 -0
- data/integration/images/ruby/2.4/Dockerfile +54 -0
- data/integration/images/ruby/2.5/Dockerfile +54 -0
- data/integration/images/ruby/2.6/Dockerfile +54 -0
- data/integration/images/ruby/2.7/Dockerfile +54 -0
- data/integration/images/ruby/3.0/Dockerfile +54 -0
- data/integration/images/wrk/Dockerfile +33 -0
- data/integration/images/wrk/scripts/entrypoint.sh +17 -0
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
- data/integration/script/build-images +43 -0
- data/lib/ddtrace.rb +65 -62
- data/lib/ddtrace/analytics.rb +38 -0
- data/lib/ddtrace/auto_instrument.rb +3 -0
- data/lib/ddtrace/auto_instrument_base.rb +6 -0
- data/lib/ddtrace/buffer.rb +298 -32
- data/lib/ddtrace/chunker.rb +34 -0
- data/lib/ddtrace/configuration.rb +151 -26
- data/lib/ddtrace/configuration/base.rb +84 -0
- data/lib/ddtrace/configuration/components.rb +151 -0
- data/lib/ddtrace/configuration/{resolver.rb → dependency_resolver.rb} +2 -2
- data/lib/ddtrace/configuration/option.rb +64 -0
- data/lib/ddtrace/configuration/option_definition.rb +121 -0
- data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
- data/lib/ddtrace/configuration/option_set.rb +6 -0
- data/lib/ddtrace/configuration/options.rb +111 -0
- data/lib/ddtrace/configuration/pin_setup.rb +4 -3
- data/lib/ddtrace/configuration/settings.rb +299 -0
- data/lib/ddtrace/context.rb +133 -66
- data/lib/ddtrace/context_flush.rb +51 -114
- data/lib/ddtrace/context_provider.rb +61 -0
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/action_cable/event.rb +66 -0
- data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
- data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
- data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
- data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +45 -0
- data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +146 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +25 -0
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/action_pack/ext.rb +19 -0
- data/lib/ddtrace/contrib/action_pack/integration.rb +45 -0
- data/lib/ddtrace/contrib/action_pack/patcher.rb +23 -0
- data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +31 -0
- data/lib/ddtrace/contrib/action_view/event.rb +35 -0
- data/lib/ddtrace/contrib/action_view/events.rb +30 -0
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +46 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +49 -0
- data/lib/ddtrace/contrib/action_view/ext.rb +20 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +74 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +167 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +52 -0
- data/lib/ddtrace/contrib/action_view/patcher.rb +47 -0
- data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +14 -3
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +2 -2
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +2 -2
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +20 -0
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +40 -0
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +12 -45
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +128 -0
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/active_record/event.rb +1 -1
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +17 -8
- data/lib/ddtrace/contrib/active_record/events/sql.rb +32 -12
- data/lib/ddtrace/contrib/active_record/ext.rb +24 -0
- data/lib/ddtrace/contrib/active_record/integration.rb +53 -0
- data/lib/ddtrace/contrib/active_record/patcher.rb +5 -35
- data/lib/ddtrace/contrib/active_record/utils.rb +85 -31
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +258 -0
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +69 -0
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +27 -0
- data/lib/ddtrace/contrib/active_support/integration.rb +46 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +15 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +3 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +20 -12
- data/lib/ddtrace/contrib/active_support/patcher.rb +23 -0
- data/lib/ddtrace/contrib/analytics.rb +24 -0
- data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/aws/ext.rb +23 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +37 -19
- data/lib/ddtrace/contrib/aws/integration.rb +42 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +30 -40
- data/lib/ddtrace/contrib/aws/services.rb +3 -0
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +20 -0
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +41 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +12 -0
- data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +23 -0
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +38 -0
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +28 -0
- data/lib/ddtrace/contrib/configurable.rb +102 -0
- data/lib/ddtrace/contrib/configuration/resolver.rb +81 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +55 -0
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +17 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +98 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +45 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +20 -0
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +36 -17
- data/lib/ddtrace/contrib/dalli/integration.rb +38 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +13 -41
- data/lib/ddtrace/contrib/dalli/quantize.rb +4 -4
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/delayed_job/ext.rb +23 -0
- data/lib/ddtrace/contrib/delayed_job/integration.rb +38 -0
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +28 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +84 -0
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +31 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +22 -0
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +39 -0
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +49 -50
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +151 -0
- data/lib/ddtrace/contrib/ethon/ext.rb +19 -0
- data/lib/ddtrace/contrib/ethon/integration.rb +43 -0
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +84 -0
- data/lib/ddtrace/contrib/ethon/patcher.rb +25 -0
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/excon/ext.rb +17 -0
- data/lib/ddtrace/contrib/excon/integration.rb +43 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +47 -23
- data/lib/ddtrace/contrib/excon/patcher.rb +7 -30
- data/lib/ddtrace/contrib/extensions.rb +143 -0
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +17 -0
- data/lib/ddtrace/contrib/faraday/integration.rb +43 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +46 -29
- data/lib/ddtrace/contrib/faraday/patcher.rb +36 -56
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +38 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +192 -120
- data/lib/ddtrace/contrib/grape/ext.rb +23 -0
- data/lib/ddtrace/contrib/grape/instrumentation.rb +33 -0
- data/lib/ddtrace/contrib/grape/integration.rb +39 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +15 -59
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +16 -0
- data/lib/ddtrace/contrib/graphql/integration.rb +39 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +37 -34
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +36 -27
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +17 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +20 -5
- data/lib/ddtrace/contrib/grpc/ext.rb +18 -0
- data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +8 -38
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +37 -0
- data/lib/ddtrace/contrib/http/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/http/ext.rb +17 -0
- data/lib/ddtrace/contrib/http/instrumentation.rb +179 -0
- data/lib/ddtrace/contrib/http/integration.rb +45 -0
- data/lib/ddtrace/contrib/http/patcher.rb +9 -144
- data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
- data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
- data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +157 -0
- data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
- data/lib/ddtrace/contrib/httprb/patcher.rb +38 -0
- data/lib/ddtrace/contrib/integration.rb +16 -0
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/event.rb +51 -0
- data/lib/ddtrace/contrib/kafka/events.rb +44 -0
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
- data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
- data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
- data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +23 -0
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +69 -0
- data/lib/ddtrace/contrib/mongodb/integration.rb +38 -0
- data/lib/ddtrace/contrib/mongodb/patcher.rb +11 -74
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +57 -18
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +18 -0
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +64 -0
- data/lib/ddtrace/contrib/mysql2/integration.rb +38 -0
- data/lib/ddtrace/contrib/mysql2/patcher.rb +9 -25
- data/lib/ddtrace/contrib/patchable.rb +70 -0
- data/lib/ddtrace/contrib/patcher.rb +65 -0
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/presto/ext.rb +28 -0
- data/lib/ddtrace/contrib/presto/instrumentation.rb +110 -0
- data/lib/ddtrace/contrib/presto/integration.rb +38 -0
- data/lib/ddtrace/contrib/presto/patcher.rb +33 -0
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/qless/ext.rb +20 -0
- data/lib/ddtrace/contrib/qless/integration.rb +38 -0
- data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
- data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +43 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +57 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/racecar/event.rb +22 -7
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/batch.rb +2 -2
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/events/message.rb +2 -2
- data/lib/ddtrace/contrib/racecar/ext.rb +25 -0
- data/lib/ddtrace/contrib/racecar/integration.rb +39 -0
- data/lib/ddtrace/contrib/racecar/patcher.rb +11 -42
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +46 -0
- data/lib/ddtrace/contrib/rack/ext.rb +21 -0
- data/lib/ddtrace/contrib/rack/integration.rb +45 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +105 -54
- data/lib/ddtrace/contrib/rack/patcher.rb +65 -49
- data/lib/ddtrace/contrib/rack/request_queue.rb +17 -7
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +93 -0
- data/lib/ddtrace/contrib/rails/ext.rb +17 -0
- data/lib/ddtrace/contrib/rails/framework.rb +82 -33
- data/lib/ddtrace/contrib/rails/integration.rb +44 -0
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +8 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +88 -34
- data/lib/ddtrace/contrib/rails/railtie.rb +5 -9
- data/lib/ddtrace/contrib/rails/utils.rb +7 -31
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +31 -0
- data/lib/ddtrace/contrib/rake/ext.rb +21 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +33 -13
- data/lib/ddtrace/contrib/rake/integration.rb +38 -0
- data/lib/ddtrace/contrib/rake/patcher.rb +10 -33
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +45 -0
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/redis/ext.rb +22 -0
- data/lib/ddtrace/contrib/redis/integration.rb +42 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +58 -53
- data/lib/ddtrace/contrib/redis/quantize.rb +47 -1
- data/lib/ddtrace/contrib/redis/tags.rb +33 -7
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +158 -0
- data/lib/ddtrace/contrib/registerable.rb +33 -0
- data/lib/ddtrace/contrib/registry.rb +42 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/resque/ext.rb +17 -0
- data/lib/ddtrace/contrib/resque/integration.rb +47 -0
- data/lib/ddtrace/contrib/resque/patcher.rb +16 -38
- data/lib/ddtrace/contrib/resque/resque_job.rb +61 -20
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +31 -0
- data/lib/ddtrace/contrib/rest_client/ext.rb +17 -0
- data/lib/ddtrace/contrib/rest_client/integration.rb +38 -0
- data/lib/ddtrace/contrib/rest_client/patcher.rb +23 -0
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +91 -0
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/rspec/example.rb +75 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +16 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +46 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +23 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/sequel/database.rb +9 -4
- data/lib/ddtrace/contrib/sequel/dataset.rb +7 -3
- data/lib/ddtrace/contrib/sequel/ext.rb +19 -0
- data/lib/ddtrace/contrib/sequel/integration.rb +38 -0
- data/lib/ddtrace/contrib/sequel/patcher.rb +6 -29
- data/lib/ddtrace/contrib/sequel/utils.rb +60 -14
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/shoryuken/ext.rb +21 -0
- data/lib/ddtrace/contrib/shoryuken/integration.rb +39 -0
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +24 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +51 -0
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +43 -0
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +37 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +27 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +38 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +22 -14
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +65 -0
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +44 -0
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +39 -0
- data/lib/ddtrace/contrib/sinatra/env.rb +27 -9
- data/lib/ddtrace/contrib/sinatra/ext.rb +27 -0
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/integration.rb +38 -0
- data/lib/ddtrace/contrib/sinatra/patcher.rb +28 -0
- data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -65
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +60 -16
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
- data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +53 -0
- data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +21 -0
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +29 -5
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +38 -0
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +21 -33
- data/lib/ddtrace/correlation.rb +39 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +279 -0
- data/lib/ddtrace/diagnostics/health.rb +33 -0
- data/lib/ddtrace/distributed_tracing/headers/b3.rb +44 -0
- data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +56 -0
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +42 -0
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +71 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +43 -0
- data/lib/ddtrace/encoding.rb +36 -32
- data/lib/ddtrace/environment.rb +41 -0
- data/lib/ddtrace/event.rb +52 -0
- data/lib/ddtrace/ext/analytics.rb +12 -0
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +297 -0
- data/lib/ddtrace/ext/correlation.rb +11 -0
- data/lib/ddtrace/ext/diagnostics.rb +36 -0
- data/lib/ddtrace/ext/distributed.rb +22 -0
- data/lib/ddtrace/ext/environment.rb +16 -0
- data/lib/ddtrace/ext/forced_tracing.rb +25 -0
- data/lib/ddtrace/ext/git.rb +11 -0
- data/lib/ddtrace/ext/http.rb +4 -2
- data/lib/ddtrace/ext/integration.rb +8 -0
- data/lib/ddtrace/ext/manual_tracing.rb +9 -0
- data/lib/ddtrace/ext/metrics.rb +15 -0
- data/lib/ddtrace/ext/net.rb +2 -0
- data/lib/ddtrace/ext/runtime.rb +30 -0
- data/lib/ddtrace/ext/sampling.rb +16 -0
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/ext/transport.rb +18 -0
- data/lib/ddtrace/forced_tracing.rb +38 -0
- data/lib/ddtrace/logger.rb +5 -4
- data/lib/ddtrace/metrics.rb +226 -0
- data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
- data/lib/ddtrace/opentelemetry/span.rb +33 -0
- data/lib/ddtrace/opentracer.rb +40 -0
- data/lib/ddtrace/opentracer/binary_propagator.rb +24 -0
- data/lib/ddtrace/opentracer/carrier.rb +6 -0
- data/lib/ddtrace/opentracer/distributed_headers.rb +55 -0
- data/lib/ddtrace/opentracer/global_tracer.rb +15 -0
- data/lib/ddtrace/opentracer/propagator.rb +22 -0
- data/lib/ddtrace/opentracer/rack_propagator.rb +60 -0
- data/lib/ddtrace/opentracer/scope.rb +15 -0
- data/lib/ddtrace/opentracer/scope_manager.rb +6 -0
- data/lib/ddtrace/opentracer/span.rb +94 -0
- data/lib/ddtrace/opentracer/span_context.rb +14 -0
- data/lib/ddtrace/opentracer/span_context_factory.rb +23 -0
- data/lib/ddtrace/opentracer/text_map_propagator.rb +75 -0
- data/lib/ddtrace/opentracer/thread_local_scope.rb +31 -0
- data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +40 -0
- data/lib/ddtrace/opentracer/tracer.rb +208 -0
- data/lib/ddtrace/patcher.rb +33 -5
- data/lib/ddtrace/pin.rb +35 -20
- data/lib/ddtrace/pipeline.rb +1 -1
- data/lib/ddtrace/pipeline/span_filter.rb +15 -15
- data/lib/ddtrace/propagation/grpc_propagator.rb +26 -6
- data/lib/ddtrace/propagation/http_propagator.rb +72 -10
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +44 -0
- data/lib/ddtrace/runtime/class_count.rb +17 -0
- data/lib/ddtrace/runtime/container.rb +71 -0
- data/lib/ddtrace/runtime/gc.rb +16 -0
- data/lib/ddtrace/runtime/identity.rb +48 -0
- data/lib/ddtrace/runtime/metrics.rb +114 -0
- data/lib/ddtrace/runtime/object_space.rb +19 -0
- data/lib/ddtrace/runtime/socket.rb +14 -0
- data/lib/ddtrace/runtime/thread_count.rb +16 -0
- data/lib/ddtrace/sampler.rb +218 -37
- data/lib/ddtrace/sampling.rb +2 -0
- data/lib/ddtrace/sampling/matcher.rb +57 -0
- data/lib/ddtrace/sampling/rate_limiter.rb +176 -0
- data/lib/ddtrace/sampling/rule.rb +61 -0
- data/lib/ddtrace/sampling/rule_sampler.rb +126 -0
- data/lib/ddtrace/span.rb +244 -34
- data/lib/ddtrace/sync_writer.rb +47 -16
- data/lib/ddtrace/tracer.rb +215 -117
- data/lib/ddtrace/transport/http.rb +113 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +145 -0
- data/lib/ddtrace/transport/http/adapters/registry.rb +25 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +83 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +66 -0
- data/lib/ddtrace/transport/http/api.rb +46 -0
- data/lib/ddtrace/transport/http/api/endpoint.rb +27 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +22 -0
- data/lib/ddtrace/transport/http/api/instance.rb +33 -0
- data/lib/ddtrace/transport/http/api/map.rb +14 -0
- data/lib/ddtrace/transport/http/api/spec.rb +15 -0
- data/lib/ddtrace/transport/http/builder.rb +169 -0
- data/lib/ddtrace/transport/http/client.rb +50 -0
- data/lib/ddtrace/transport/http/env.rb +56 -0
- data/lib/ddtrace/transport/http/response.rb +26 -0
- data/lib/ddtrace/transport/http/statistics.rb +43 -0
- data/lib/ddtrace/transport/http/traces.rb +142 -0
- data/lib/ddtrace/transport/io.rb +26 -0
- data/lib/ddtrace/transport/io/client.rb +76 -0
- data/lib/ddtrace/transport/io/response.rb +23 -0
- data/lib/ddtrace/transport/io/traces.rb +97 -0
- data/lib/ddtrace/transport/parcel.rb +13 -0
- data/lib/ddtrace/transport/request.rb +13 -0
- data/lib/ddtrace/transport/response.rb +60 -0
- data/lib/ddtrace/transport/statistics.rb +72 -0
- data/lib/ddtrace/transport/traces.rb +205 -0
- data/lib/ddtrace/utils.rb +17 -14
- data/lib/ddtrace/utils/compression.rb +27 -0
- data/lib/ddtrace/utils/database.rb +7 -3
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/utils/object_set.rb +41 -0
- data/lib/ddtrace/utils/only_once.rb +40 -0
- data/lib/ddtrace/utils/sequence.rb +17 -0
- data/lib/ddtrace/utils/string_table.rb +45 -0
- data/lib/ddtrace/utils/time.rb +45 -0
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/vendor/active_record/connection_specification.rb +301 -0
- data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
- data/lib/ddtrace/version.rb +3 -1
- data/lib/ddtrace/worker.rb +20 -0
- data/lib/ddtrace/workers.rb +39 -40
- data/lib/ddtrace/workers/async.rb +173 -0
- data/lib/ddtrace/workers/loop.rb +119 -0
- data/lib/ddtrace/workers/polling.rb +49 -0
- data/lib/ddtrace/workers/queue.rb +40 -0
- data/lib/ddtrace/workers/runtime_metrics.rb +51 -0
- data/lib/ddtrace/workers/trace_writer.rb +202 -0
- data/lib/ddtrace/writer.rb +121 -57
- data/tasks/release_gem.rake +28 -0
- metadata +501 -211
- data/lib/ddtrace/configurable.rb +0 -83
- data/lib/ddtrace/configuration/proxy.rb +0 -25
- data/lib/ddtrace/contrib/base.rb +0 -15
- data/lib/ddtrace/contrib/mysql2/client.rb +0 -60
- data/lib/ddtrace/contrib/rails/action_controller.rb +0 -91
- data/lib/ddtrace/contrib/rails/action_controller_patch.rb +0 -77
- data/lib/ddtrace/contrib/rails/action_view.rb +0 -19
- data/lib/ddtrace/contrib/rails/active_support.rb +0 -65
- data/lib/ddtrace/contrib/rails/core_extensions.rb +0 -356
- data/lib/ddtrace/contrib/sidekiq/tracer.rb +0 -72
- data/lib/ddtrace/ext/cache.rb +0 -8
- data/lib/ddtrace/ext/grpc.rb +0 -7
- data/lib/ddtrace/ext/mongo.rb +0 -12
- data/lib/ddtrace/ext/redis.rb +0 -17
- data/lib/ddtrace/monkey.rb +0 -65
- data/lib/ddtrace/propagation/distributed_headers.rb +0 -48
- data/lib/ddtrace/provider.rb +0 -21
- data/lib/ddtrace/registry.rb +0 -42
- data/lib/ddtrace/registry/registerable.rb +0 -20
- data/lib/ddtrace/transport.rb +0 -212
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'ddtrace'
|
|
2
|
+
|
|
3
|
+
# Railtie to include AutoInstrumentation in rails loading
|
|
4
|
+
class DatadogAutoInstrumentRailtie < Rails::Railtie
|
|
5
|
+
# we want to load before config initializers so that any user supplied config
|
|
6
|
+
# in config/initializers/datadog.rb will take precedence
|
|
7
|
+
initializer 'datadog.start_tracer', before: :load_config_initializers do
|
|
8
|
+
Datadog::Contrib::AutoInstrument.patch_all
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
require 'ddtrace/contrib/configuration/settings'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Contrib
|
|
5
|
+
module Rails
|
|
6
|
+
module Configuration
|
|
7
|
+
# Custom settings for the Rails integration
|
|
8
|
+
class Settings < Contrib::Configuration::Settings
|
|
9
|
+
def initialize(options = {})
|
|
10
|
+
super(options)
|
|
11
|
+
|
|
12
|
+
# NOTE: Eager load these
|
|
13
|
+
# Rails integration is responsible for orchestrating other integrations.
|
|
14
|
+
# When using environment variables, settings will not be automatically
|
|
15
|
+
# filled because nothing explicitly calls them. They must though, so
|
|
16
|
+
# integrations like ActionPack can receive the value as it should.
|
|
17
|
+
# Trigger these manually to force an eager load and propagate them.
|
|
18
|
+
analytics_enabled
|
|
19
|
+
analytics_sample_rate
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
option :enabled do |o|
|
|
23
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
24
|
+
o.lazy
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
option :analytics_enabled do |o|
|
|
28
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], nil) }
|
|
29
|
+
o.lazy
|
|
30
|
+
o.on_set do |value|
|
|
31
|
+
# Update ActionPack analytics too
|
|
32
|
+
Datadog.configuration[:action_pack][:analytics_enabled] = value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
option :analytics_sample_rate do |o|
|
|
37
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
38
|
+
o.lazy
|
|
39
|
+
o.on_set do |value|
|
|
40
|
+
# Update ActionPack analytics too
|
|
41
|
+
Datadog.configuration[:action_pack][:analytics_sample_rate] = value
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
option :cache_service do |o|
|
|
46
|
+
o.on_set do |value|
|
|
47
|
+
# Update ActiveSupport service name too
|
|
48
|
+
Datadog.configuration[:active_support][:cache_service] = value
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
option :controller_service do |o|
|
|
53
|
+
o.on_set do |value|
|
|
54
|
+
# Update ActionPack service name too
|
|
55
|
+
Datadog.configuration[:action_pack][:controller_service] = value
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
option :database_service do |o|
|
|
60
|
+
o.depends_on :service_name
|
|
61
|
+
o.on_set do |value|
|
|
62
|
+
# Update ActiveRecord service name too
|
|
63
|
+
Datadog.configuration[:active_record][:service_name] = value
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
option :distributed_tracing, default: true
|
|
68
|
+
option :exception_controller do |o|
|
|
69
|
+
o.on_set do |value|
|
|
70
|
+
# Update ActionPack exception controller too
|
|
71
|
+
Datadog.configuration[:action_pack][:exception_controller] = value
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
option :middleware, default: true
|
|
76
|
+
option :middleware_names, default: false
|
|
77
|
+
option :template_base_path do |o|
|
|
78
|
+
o.default 'views/'
|
|
79
|
+
o.on_set do |value|
|
|
80
|
+
# Update ActionView template base path too
|
|
81
|
+
Datadog.configuration[:action_view][:template_base_path] = value
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
option :log_injection do |o|
|
|
86
|
+
o.default { env_to_bool(Ext::ENV_LOGS_INJECTION_ENABLED, false) }
|
|
87
|
+
o.lazy
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Rails
|
|
4
|
+
# Rails integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'rails'.freeze
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_RAILS_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_RAILS_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_RAILS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
12
|
+
ENV_DISABLE = 'DISABLE_DATADOG_RAILS'.freeze
|
|
13
|
+
ENV_LOGS_INJECTION_ENABLED = 'DD_LOGS_INJECTION'.freeze
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
require 'ddtrace/pin'
|
|
2
2
|
require 'ddtrace/ext/app_types'
|
|
3
3
|
|
|
4
|
-
require 'ddtrace/contrib/active_record/
|
|
4
|
+
require 'ddtrace/contrib/active_record/integration'
|
|
5
|
+
require 'ddtrace/contrib/active_support/integration'
|
|
6
|
+
require 'ddtrace/contrib/action_cable/integration'
|
|
7
|
+
require 'ddtrace/contrib/action_pack/integration'
|
|
8
|
+
require 'ddtrace/contrib/action_view/integration'
|
|
5
9
|
require 'ddtrace/contrib/grape/endpoint'
|
|
6
|
-
require 'ddtrace/contrib/rack/middlewares'
|
|
7
10
|
|
|
8
|
-
require 'ddtrace/contrib/rails/
|
|
9
|
-
require 'ddtrace/contrib/rails/action_controller'
|
|
10
|
-
require 'ddtrace/contrib/rails/action_view'
|
|
11
|
-
require 'ddtrace/contrib/rails/active_support'
|
|
11
|
+
require 'ddtrace/contrib/rails/ext'
|
|
12
12
|
require 'ddtrace/contrib/rails/utils'
|
|
13
13
|
|
|
14
14
|
module Datadog
|
|
@@ -19,55 +19,104 @@ module Datadog
|
|
|
19
19
|
# - handle configuration entries which are specific to Datadog tracing
|
|
20
20
|
# - instrument parts of the framework when needed
|
|
21
21
|
module Framework
|
|
22
|
-
# configure
|
|
22
|
+
# After the Rails application finishes initializing, we configure the Rails
|
|
23
|
+
# integration and all its sub-components with the application information
|
|
24
|
+
# available.
|
|
25
|
+
# We do this after the initialization because not all the information we
|
|
26
|
+
# require is available before then.
|
|
23
27
|
def self.setup
|
|
24
|
-
|
|
28
|
+
# NOTE: #configure has the side effect of rebuilding trace components.
|
|
29
|
+
# During a typical Rails application lifecycle, we will see trace
|
|
30
|
+
# components initialized twice because of this. This is necessary
|
|
31
|
+
# because key configuration is not available until after the Rails
|
|
32
|
+
# application has fully loaded, and some of this configuration is
|
|
33
|
+
# used to reconfigure tracer components with Rails-sourced defaults.
|
|
34
|
+
# This is a trade-off we take to get nice defaults.
|
|
35
|
+
Datadog.configure do |datadog_config|
|
|
36
|
+
rails_config = config_with_defaults(datadog_config)
|
|
25
37
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
# By default, default service would be guessed from the script
|
|
39
|
+
# being executed, but here we know better, get it from Rails config.
|
|
40
|
+
# Don't set this if service has been explicitly provided by the user.
|
|
41
|
+
datadog_config.service ||= rails_config[:service_name]
|
|
29
42
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
activate_rack!(datadog_config, rails_config)
|
|
44
|
+
activate_action_cable!(datadog_config, rails_config)
|
|
45
|
+
activate_active_support!(datadog_config, rails_config)
|
|
46
|
+
activate_action_pack!(datadog_config, rails_config)
|
|
47
|
+
activate_action_view!(datadog_config, rails_config)
|
|
48
|
+
activate_active_record!(datadog_config, rails_config)
|
|
49
|
+
end
|
|
33
50
|
end
|
|
34
51
|
|
|
35
|
-
def self.config_with_defaults
|
|
52
|
+
def self.config_with_defaults(datadog_config)
|
|
36
53
|
# We set defaults here instead of in the patcher because we need to wait
|
|
37
54
|
# for the Rails application to be fully initialized.
|
|
38
|
-
|
|
39
|
-
config[:service_name] ||= Utils.app_name
|
|
55
|
+
datadog_config[:rails].tap do |config|
|
|
56
|
+
config[:service_name] ||= (Datadog.configuration.service || Utils.app_name)
|
|
40
57
|
config[:database_service] ||= "#{config[:service_name]}-#{Contrib::ActiveRecord::Utils.adapter_name}"
|
|
41
58
|
config[:controller_service] ||= config[:service_name]
|
|
42
59
|
config[:cache_service] ||= "#{config[:service_name]}-cache"
|
|
43
60
|
end
|
|
44
61
|
end
|
|
45
62
|
|
|
46
|
-
def self.activate_rack!(
|
|
47
|
-
|
|
63
|
+
def self.activate_rack!(datadog_config, rails_config)
|
|
64
|
+
datadog_config.use(
|
|
48
65
|
:rack,
|
|
49
|
-
tracer: config[:tracer],
|
|
50
66
|
application: ::Rails.application,
|
|
51
|
-
service_name:
|
|
52
|
-
middleware_names:
|
|
53
|
-
distributed_tracing:
|
|
67
|
+
service_name: rails_config[:service_name],
|
|
68
|
+
middleware_names: rails_config[:middleware_names],
|
|
69
|
+
distributed_tracing: rails_config[:distributed_tracing]
|
|
54
70
|
)
|
|
55
71
|
end
|
|
56
72
|
|
|
57
|
-
def self.
|
|
58
|
-
return unless defined?(::
|
|
73
|
+
def self.activate_active_support!(datadog_config, rails_config)
|
|
74
|
+
return unless defined?(::ActiveSupport)
|
|
59
75
|
|
|
60
|
-
|
|
61
|
-
:
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
datadog_config.use(
|
|
77
|
+
:active_support,
|
|
78
|
+
cache_service: rails_config[:cache_service]
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.activate_action_cable!(datadog_config, rails_config)
|
|
83
|
+
return unless defined?(::ActionCable)
|
|
84
|
+
|
|
85
|
+
datadog_config.use(
|
|
86
|
+
:action_cable,
|
|
87
|
+
service_name: "#{rails_config[:service_name]}-#{Contrib::ActionCable::Ext::SERVICE_NAME}"
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def self.activate_action_pack!(datadog_config, rails_config)
|
|
92
|
+
return unless defined?(::ActionPack)
|
|
93
|
+
|
|
94
|
+
# TODO: This is configuring ActionPack but not patching. It will queue ActionPack
|
|
95
|
+
# for patching, but patching won't take place until Datadog.configure completes.
|
|
96
|
+
# Should we manually patch here?
|
|
97
|
+
|
|
98
|
+
datadog_config.use(
|
|
99
|
+
:action_pack,
|
|
100
|
+
service_name: rails_config[:service_name]
|
|
101
|
+
)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def self.activate_action_view!(datadog_config, rails_config)
|
|
105
|
+
return unless defined?(::ActionView)
|
|
106
|
+
|
|
107
|
+
datadog_config.use(
|
|
108
|
+
:action_view,
|
|
109
|
+
service_name: rails_config[:service_name]
|
|
64
110
|
)
|
|
65
111
|
end
|
|
66
112
|
|
|
67
|
-
def self.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
113
|
+
def self.activate_active_record!(datadog_config, rails_config)
|
|
114
|
+
return unless defined?(::ActiveRecord)
|
|
115
|
+
|
|
116
|
+
datadog_config.use(
|
|
117
|
+
:active_record,
|
|
118
|
+
service_name: rails_config[:database_service]
|
|
119
|
+
)
|
|
71
120
|
end
|
|
72
121
|
end
|
|
73
122
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
|
|
3
|
+
require 'ddtrace/contrib/rails/ext'
|
|
4
|
+
require 'ddtrace/contrib/rails/configuration/settings'
|
|
5
|
+
require 'ddtrace/contrib/rails/patcher'
|
|
6
|
+
|
|
7
|
+
module Datadog
|
|
8
|
+
module Contrib
|
|
9
|
+
module Rails
|
|
10
|
+
# Description of Rails integration
|
|
11
|
+
class Integration
|
|
12
|
+
include Contrib::Integration
|
|
13
|
+
|
|
14
|
+
MINIMUM_VERSION = Gem::Version.new('3.0')
|
|
15
|
+
|
|
16
|
+
register_as :rails, auto_patch: false
|
|
17
|
+
|
|
18
|
+
def self.version
|
|
19
|
+
Gem.loaded_specs['railties'] && Gem.loaded_specs['railties'].version
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.loaded?
|
|
23
|
+
!defined?(::Rails).nil?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.compatible?
|
|
27
|
+
super && version >= MINIMUM_VERSION
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.patchable?
|
|
31
|
+
super && !ENV.key?(Ext::ENV_DISABLE)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def default_configuration
|
|
35
|
+
Configuration::Settings.new
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def patcher
|
|
39
|
+
Patcher
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
# Instrument Rails.
|
|
4
|
+
module Rails
|
|
5
|
+
# Rails log injection helper methods
|
|
6
|
+
module LogInjection
|
|
7
|
+
module_function
|
|
8
|
+
|
|
9
|
+
def add_lograge_logger(app)
|
|
10
|
+
# custom_options defaults to nil and can be either a hash or a lambda which returns a hash
|
|
11
|
+
# https://github.com/roidrage/lograge/blob/1729eab7956bb95c5992e4adab251e4f93ff9280/lib/lograge.rb#L28
|
|
12
|
+
if (custom_options = app.config.lograge.custom_options).nil?
|
|
13
|
+
# if it's not set, we set to a lambda that returns DD tracing context
|
|
14
|
+
app.config.lograge.custom_options = lambda do |_event|
|
|
15
|
+
# Retrieves trace information for current thread
|
|
16
|
+
correlation = Datadog.tracer.active_correlation
|
|
17
|
+
|
|
18
|
+
datadog_trace_log_hash(correlation)
|
|
19
|
+
end
|
|
20
|
+
# check if lambda, if so then define a new lambda which invokes the original lambda and
|
|
21
|
+
# merges the returned hash with the the DD tracing context hash.
|
|
22
|
+
elsif custom_options.respond_to?(:call)
|
|
23
|
+
app.config.lograge.custom_options = lambda do |event|
|
|
24
|
+
# invoke original lambda
|
|
25
|
+
result = custom_options.call(event)
|
|
26
|
+
# Retrieves trace information for current thread
|
|
27
|
+
correlation = Datadog.tracer.active_correlation
|
|
28
|
+
# merge original lambda with datadog context
|
|
29
|
+
result.merge(datadog_trace_log_hash(correlation))
|
|
30
|
+
end
|
|
31
|
+
# otherwise if it's just a static hash, we have to wrap that hash in a lambda to retrieve
|
|
32
|
+
# the DD tracing context, then merge the tracing context with the original static hash.
|
|
33
|
+
# don't modify if custom_options is not an accepted format.
|
|
34
|
+
elsif custom_options.is_a?(Hash)
|
|
35
|
+
app.config.lograge.custom_options = lambda do |_event|
|
|
36
|
+
# Retrieves trace information for current thread
|
|
37
|
+
correlation = Datadog.tracer.active_correlation
|
|
38
|
+
|
|
39
|
+
# merge original lambda with datadog context
|
|
40
|
+
custom_options.merge(datadog_trace_log_hash(correlation))
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
rescue StandardError => e
|
|
44
|
+
# TODO: can we use Datadog.logger at this point?
|
|
45
|
+
Datadog.logger.warn("Unable to add Datadog Trace context to Lograge: #{e.message}")
|
|
46
|
+
false
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def add_as_tagged_logging_logger(app)
|
|
50
|
+
# we want to check if the current logger is a tagger logger instance
|
|
51
|
+
# log_tags defaults to nil so we have to set as an array if nothing exists yet
|
|
52
|
+
if (log_tags = app.config.log_tags).nil?
|
|
53
|
+
app.config.log_tags = [proc { Datadog.tracer.active_correlation.to_s }]
|
|
54
|
+
# if existing log_tags configuration exists, append to the end of the array
|
|
55
|
+
elsif log_tags.is_a?(Array)
|
|
56
|
+
app.config.log_tags << proc { Datadog.tracer.active_correlation.to_s }
|
|
57
|
+
end
|
|
58
|
+
rescue StandardError => e
|
|
59
|
+
# TODO: can we use Datadog.logger at this point?
|
|
60
|
+
Datadog.logger.warn("Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.message}")
|
|
61
|
+
false
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def datadog_trace_log_hash(correlation)
|
|
65
|
+
{
|
|
66
|
+
# Adds IDs as tags to log output
|
|
67
|
+
dd: {
|
|
68
|
+
# To preserve precision during JSON serialization, use strings for large numbers
|
|
69
|
+
trace_id: correlation.trace_id.to_s,
|
|
70
|
+
span_id: correlation.span_id.to_s,
|
|
71
|
+
env: correlation.env.to_s,
|
|
72
|
+
service: correlation.service.to_s,
|
|
73
|
+
version: correlation.version.to_s
|
|
74
|
+
},
|
|
75
|
+
ddsource: ['ruby']
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'ddtrace/ext/http'
|
|
2
|
+
require 'ddtrace/contrib/action_pack/utils'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
4
5
|
module Contrib
|
|
@@ -23,11 +24,16 @@ module Datadog
|
|
|
23
24
|
rescue Exception => e
|
|
24
25
|
tracer = Datadog.configuration[:rails][:tracer]
|
|
25
26
|
span = tracer.active_span
|
|
26
|
-
|
|
27
|
+
if !span.nil? && ActionPack::Utils.exception_is_error?(e)
|
|
27
28
|
# Only set error if it's supposed to be flagged as such
|
|
28
29
|
# e.g. we don't want to flag 404s.
|
|
29
30
|
# You can add custom errors via `config.action_dispatch.rescue_responses`
|
|
30
|
-
span.set_error(e)
|
|
31
|
+
span.set_error(e)
|
|
32
|
+
|
|
33
|
+
# Some exception gets handled by Rails middleware before it can be set on Rack middleware
|
|
34
|
+
# The rack span is the root span of the request and should make sure it has the full exception
|
|
35
|
+
# set on it.
|
|
36
|
+
env[:datadog_rack_request_span].set_error(e) if env[:datadog_rack_request_span]
|
|
31
37
|
end
|
|
32
38
|
raise e
|
|
33
39
|
end
|
|
@@ -1,53 +1,107 @@
|
|
|
1
1
|
require 'ddtrace/contrib/rails/utils'
|
|
2
|
+
require 'ddtrace/contrib/rails/framework'
|
|
3
|
+
require 'ddtrace/contrib/rails/middlewares'
|
|
4
|
+
require 'ddtrace/contrib/rails/log_injection'
|
|
5
|
+
require 'ddtrace/contrib/rack/middlewares'
|
|
6
|
+
require 'ddtrace/utils/only_once'
|
|
2
7
|
|
|
3
8
|
module Datadog
|
|
4
9
|
module Contrib
|
|
5
10
|
module Rails
|
|
6
|
-
# Patcher
|
|
11
|
+
# Patcher enables patching of 'rails' module.
|
|
7
12
|
module Patcher
|
|
8
|
-
include
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
include Contrib::Patcher
|
|
14
|
+
|
|
15
|
+
BEFORE_INITIALIZE_ONLY_ONCE_PER_APP = Hash.new { |h, key| h[key] = Datadog::Utils::OnlyOnce.new }
|
|
16
|
+
AFTER_INITIALIZE_ONLY_ONCE_PER_APP = Hash.new { |h, key| h[key] = Datadog::Utils::OnlyOnce.new }
|
|
17
|
+
|
|
18
|
+
module_function
|
|
19
|
+
|
|
20
|
+
def target_version
|
|
21
|
+
Integration.version
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def patch
|
|
25
|
+
patch_before_intialize
|
|
26
|
+
patch_after_intialize
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def patch_before_intialize
|
|
30
|
+
::ActiveSupport.on_load(:before_initialize) do
|
|
31
|
+
Datadog::Contrib::Rails::Patcher.before_intialize(self)
|
|
18
32
|
end
|
|
19
33
|
end
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
|
|
35
|
+
def before_intialize(app)
|
|
36
|
+
BEFORE_INITIALIZE_ONLY_ONCE_PER_APP[app].run do
|
|
37
|
+
# Middleware must be added before the application is initialized.
|
|
38
|
+
# Otherwise the middleware stack will be frozen.
|
|
39
|
+
# Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
|
|
40
|
+
add_middleware(app) if Datadog.configuration[:rails][:middleware]
|
|
41
|
+
add_logger(app) if Datadog.configuration[:rails][:log_injection]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def add_middleware(app)
|
|
46
|
+
# Add trace middleware
|
|
47
|
+
app.middleware.insert_before(0, Datadog::Contrib::Rack::TraceMiddleware)
|
|
48
|
+
|
|
49
|
+
# Insert right after Rails exception handling middleware, because if it's before,
|
|
50
|
+
# it catches and swallows the error. If it's too far after, custom middleware can find itself
|
|
51
|
+
# between, and raise exceptions that don't end up getting tagged on the request properly.
|
|
52
|
+
# e.g lost stack trace.
|
|
53
|
+
app.middleware.insert_after(
|
|
54
|
+
ActionDispatch::ShowExceptions,
|
|
55
|
+
Datadog::Contrib::Rails::ExceptionMiddleware
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def add_logger(app)
|
|
60
|
+
should_warn = true
|
|
61
|
+
# check if lograge key exists
|
|
62
|
+
# Note: Rails executes initializers sequentially based on alphabetical order,
|
|
63
|
+
# and lograge config could occur after dd config.
|
|
64
|
+
# Checking for `app.config.lograge.enabled` may yield a false negative.
|
|
65
|
+
# Instead we should naively add custom options if `config.lograge` exists from the lograge Railtie,
|
|
66
|
+
# since the custom options get ignored without lograge explicitly being enabled.
|
|
67
|
+
# See: https://github.com/roidrage/lograge/blob/1729eab7956bb95c5992e4adab251e4f93ff9280/lib/lograge/railtie.rb#L7-L12
|
|
68
|
+
if app.config.respond_to?(:lograge)
|
|
69
|
+
Datadog::Contrib::Rails::LogInjection.add_lograge_logger(app)
|
|
70
|
+
should_warn = false
|
|
36
71
|
end
|
|
37
72
|
|
|
38
|
-
|
|
39
|
-
|
|
73
|
+
# if lograge isn't set, check if tagged logged is enabled.
|
|
74
|
+
# if so, add proc that injects trace identifiers for tagged logging.
|
|
75
|
+
if (logger = app.config.logger) &&
|
|
76
|
+
defined?(::ActiveSupport::TaggedLogging) &&
|
|
77
|
+
logger.is_a?(::ActiveSupport::TaggedLogging)
|
|
78
|
+
|
|
79
|
+
Datadog::Contrib::Rails::LogInjection.add_as_tagged_logging_logger(app)
|
|
80
|
+
should_warn = false
|
|
40
81
|
end
|
|
41
82
|
|
|
42
|
-
|
|
43
|
-
|
|
83
|
+
Datadog.logger.warn("Unable to enable Datadog Trace context, Logger #{logger} is not supported") if should_warn
|
|
84
|
+
end
|
|
44
85
|
|
|
45
|
-
|
|
86
|
+
def patch_after_intialize
|
|
87
|
+
::ActiveSupport.on_load(:after_initialize) do
|
|
88
|
+
Datadog::Contrib::Rails::Patcher.after_intialize(self)
|
|
46
89
|
end
|
|
47
90
|
end
|
|
91
|
+
|
|
92
|
+
def after_intialize(app)
|
|
93
|
+
AFTER_INITIALIZE_ONLY_ONCE_PER_APP[app].run do
|
|
94
|
+
# Finish configuring the tracer after the application is initialized.
|
|
95
|
+
# We need to wait for some things, like application name, middleware stack, etc.
|
|
96
|
+
setup_tracer
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Configure Rails tracing with settings
|
|
101
|
+
def setup_tracer
|
|
102
|
+
Datadog::Contrib::Rails::Framework.setup
|
|
103
|
+
end
|
|
48
104
|
end
|
|
49
105
|
end
|
|
50
106
|
end
|
|
51
107
|
end
|
|
52
|
-
|
|
53
|
-
require 'ddtrace/contrib/rails/railtie' if Datadog.registry[:rails].compatible?
|