ddtrace 0.44.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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +183 -15
- data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
- data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
- data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
- data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
- data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
- data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
- data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
- data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
- data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
- data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
- data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
- data/.github/workflows/create-next-milestone.yml +2 -2
- data/.gitlab-ci.yml +18 -18
- data/.rubocop.yml +269 -7
- data/.rubocop_todo.yml +438 -0
- data/.simplecov +6 -0
- data/Appraisals +87 -9
- data/CHANGELOG.md +238 -1
- data/Gemfile +63 -3
- data/LICENSE-3rdparty.csv +2 -0
- data/README.md +1 -0
- data/Rakefile +65 -25
- data/bin/ddtracerb +15 -0
- data/ddtrace.gemspec +9 -36
- data/docker-compose.yml +75 -7
- data/docs/DevelopmentGuide.md +28 -0
- data/docs/GettingStarted.md +162 -68
- data/docs/ProfilingDevelopment.md +88 -0
- data/integration/README.md +67 -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 +28 -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 +8 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/auto_instrument.rb +3 -0
- data/lib/ddtrace/auto_instrument_base.rb +6 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +121 -26
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +87 -5
- data/lib/ddtrace/configuration/option_definition.rb +1 -3
- data/lib/ddtrace/configuration/options.rb +4 -7
- data/lib/ddtrace/configuration/settings.rb +48 -3
- data/lib/ddtrace/context.rb +5 -6
- data/lib/ddtrace/context_provider.rb +0 -1
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/event.rb +1 -1
- data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
- data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +57 -20
- data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
- data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
- data/lib/ddtrace/contrib/aws/services.rb +2 -0
- data/lib/ddtrace/contrib/configurable.rb +63 -39
- data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +19 -20
- data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
- data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
- data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +10 -9
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
- data/lib/ddtrace/contrib/extensions.rb +53 -3
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
- data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
- 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/instrumentation.rb +14 -20
- data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patchable.rb +18 -7
- data/lib/ddtrace/contrib/patcher.rb +9 -6
- data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
- data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +1 -1
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/integration.rb +7 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
- data/lib/ddtrace/contrib/rails/utils.rb +4 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/rake/integration.rb +1 -1
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +11 -4
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
- data/lib/ddtrace/contrib/registry.rb +2 -2
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
- data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/rspec/example.rb +24 -10
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
- data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
- data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -3
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
- data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
- data/lib/ddtrace/correlation.rb +1 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
- data/lib/ddtrace/error.rb +2 -0
- data/lib/ddtrace/ext/ci.rb +43 -10
- data/lib/ddtrace/ext/distributed.rb +1 -1
- data/lib/ddtrace/ext/git.rb +0 -1
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/profiling.rb +52 -0
- data/lib/ddtrace/ext/runtime.rb +3 -1
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/forced_tracing.rb +2 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/metrics.rb +14 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
- data/lib/ddtrace/opentracer/span.rb +2 -6
- data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
- data/lib/ddtrace/patcher.rb +25 -4
- data/lib/ddtrace/pin.rb +8 -61
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/profiling.rb +54 -0
- data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
- data/lib/ddtrace/profiling/buffer.rb +41 -0
- data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
- data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
- data/lib/ddtrace/profiling/event.rb +13 -0
- data/lib/ddtrace/profiling/events/stack.rb +102 -0
- data/lib/ddtrace/profiling/exporter.rb +23 -0
- data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
- data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
- data/lib/ddtrace/profiling/ext/forking.rb +97 -0
- data/lib/ddtrace/profiling/flush.rb +41 -0
- data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
- data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
- data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
- data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
- data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
- data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
- data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
- data/lib/ddtrace/profiling/pprof/template.rb +114 -0
- data/lib/ddtrace/profiling/preload.rb +3 -0
- data/lib/ddtrace/profiling/profiler.rb +28 -0
- data/lib/ddtrace/profiling/recorder.rb +87 -0
- data/lib/ddtrace/profiling/scheduler.rb +84 -0
- data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
- data/lib/ddtrace/profiling/transport/client.rb +12 -0
- data/lib/ddtrace/profiling/transport/http.rb +122 -0
- data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
- data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
- data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
- data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
- data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
- data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
- data/lib/ddtrace/profiling/transport/io.rb +30 -0
- data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
- data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
- data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
- data/lib/ddtrace/profiling/transport/request.rb +15 -0
- data/lib/ddtrace/profiling/transport/response.rb +8 -0
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/propagation/http_propagator.rb +17 -2
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +2 -2
- data/lib/ddtrace/runtime/container.rb +32 -26
- data/lib/ddtrace/runtime/identity.rb +8 -0
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +12 -12
- data/lib/ddtrace/tasks/exec.rb +48 -0
- data/lib/ddtrace/tasks/help.rb +14 -0
- data/lib/ddtrace/tracer.rb +28 -5
- data/lib/ddtrace/transport/http.rb +15 -8
- data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
- data/lib/ddtrace/transport/http/builder.rb +7 -1
- data/lib/ddtrace/transport/http/env.rb +8 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/io/client.rb +15 -8
- data/lib/ddtrace/transport/io/response.rb +1 -3
- data/lib/ddtrace/transport/io/traces.rb +6 -0
- data/lib/ddtrace/transport/parcel.rb +4 -0
- data/lib/ddtrace/transport/traces.rb +18 -1
- data/lib/ddtrace/utils/compression.rb +27 -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 +32 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -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/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +11 -3
- data/lib/ddtrace/workers/loop.rb +17 -3
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/queue.rb +1 -0
- data/lib/ddtrace/workers/runtime_metrics.rb +14 -1
- data/lib/ddtrace/workers/trace_writer.rb +10 -10
- data/lib/ddtrace/writer.rb +7 -4
- metadata +213 -379
- data/lib/ddtrace/augmentation.rb +0 -13
- data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
- data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
- data/lib/ddtrace/augmentation/shim.rb +0 -102
- data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
- data/lib/ddtrace/monkey.rb +0 -58
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
APP_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
5
|
+
APP_DIR=${APP_SCRIPT_DIR%/script}
|
|
6
|
+
cd $APP_DIR
|
|
7
|
+
|
|
8
|
+
while getopts ":v:" opt; do
|
|
9
|
+
case $opt in
|
|
10
|
+
v)
|
|
11
|
+
APP_RUBY_VERSION=$OPTARG
|
|
12
|
+
;;
|
|
13
|
+
\?)
|
|
14
|
+
echo "Invalid option: -$OPTARG" >&2
|
|
15
|
+
exit 1
|
|
16
|
+
;;
|
|
17
|
+
:)
|
|
18
|
+
echo "Option -$OPTARG requires an argument." >&2
|
|
19
|
+
exit 1
|
|
20
|
+
;;
|
|
21
|
+
esac
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
echo "== Building Ruby app images... =="
|
|
25
|
+
if [ -v APP_RUBY_VERSION ]; then
|
|
26
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-$APP_RUBY_VERSION -t datadog/dd-apm-demo:rb-$APP_RUBY_VERSION-ruby .
|
|
27
|
+
else
|
|
28
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.0 -t datadog/dd-apm-demo:rb-2.0-ruby .
|
|
29
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.1 -t datadog/dd-apm-demo:rb-2.1-ruby .
|
|
30
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.2 -t datadog/dd-apm-demo:rb-2.2-ruby .
|
|
31
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.3 -t datadog/dd-apm-demo:rb-2.3-ruby .
|
|
32
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.4 -t datadog/dd-apm-demo:rb-2.4-ruby .
|
|
33
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.5 -t datadog/dd-apm-demo:rb-2.5-ruby .
|
|
34
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.6 -t datadog/dd-apm-demo:rb-2.6-ruby .
|
|
35
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-2.7 -t datadog/dd-apm-demo:rb-2.7-ruby .
|
|
36
|
+
docker build --build-arg BASE_IMAGE=datadog/dd-apm-demo:rb-3.0 -t datadog/dd-apm-demo:rb-3.0-ruby .
|
|
37
|
+
fi
|
|
38
|
+
echo "== Done building Ruby app images. =="
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
APP_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
5
|
+
APP_DIR=${APP_SCRIPT_DIR%/script}
|
|
6
|
+
cd $APP_DIR
|
|
7
|
+
|
|
8
|
+
# Parse options
|
|
9
|
+
while getopts "v:" opt; do
|
|
10
|
+
case $opt in
|
|
11
|
+
v)
|
|
12
|
+
APP_RUBY_VERSION=$OPTARG
|
|
13
|
+
;;
|
|
14
|
+
\?)
|
|
15
|
+
echo "Invalid option: -$OPTARG" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
;;
|
|
18
|
+
:)
|
|
19
|
+
echo "Option -$OPTARG requires an argument." >&2
|
|
20
|
+
exit 1
|
|
21
|
+
;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
# Validate options
|
|
26
|
+
if [ -z ${APP_RUBY_VERSION+x} ]; then
|
|
27
|
+
echo "You must specify a Ruby version with -v. (e.g. 2.7)" >&2
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Set configuration
|
|
32
|
+
APP_BASE_IMAGE=${APP_BASE_IMAGE:-datadog/dd-apm-demo:rb-$APP_RUBY_VERSION}
|
|
33
|
+
APP_IMAGE=${APP_IMAGE:-$APP_BASE_IMAGE-ruby}
|
|
34
|
+
APP_COMPOSE_FILES="-f docker-compose.ci.yml"
|
|
35
|
+
|
|
36
|
+
echo "== Running integration tests... =="
|
|
37
|
+
echo " - App: ruby"
|
|
38
|
+
echo " - Ruby version: $APP_RUBY_VERSION"
|
|
39
|
+
echo " - Base image: $APP_BASE_IMAGE"
|
|
40
|
+
echo " - App image: $APP_IMAGE"
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
# Pull/build any missing images
|
|
44
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES build
|
|
45
|
+
|
|
46
|
+
# Run the test suite
|
|
47
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES run integration-tester
|
|
48
|
+
|
|
49
|
+
# Cleanup
|
|
50
|
+
APP_IMAGE=$APP_IMAGE docker-compose $APP_COMPOSE_FILES down -t 0 --remove-orphans
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
class Analyzer
|
|
4
|
+
def initialize(filename)
|
|
5
|
+
@filename = filename
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def analyze
|
|
9
|
+
data = []
|
|
10
|
+
File.open(@filename) do |f|
|
|
11
|
+
f.each_line do |line|
|
|
12
|
+
data << (parsed=JSON.parse(line))
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
data.group_by{ |row| row['generation'] }
|
|
17
|
+
.sort{|a,b| a[0].to_i <=> b[0].to_i }
|
|
18
|
+
.each do |k,v|
|
|
19
|
+
puts "location #{k} objects #{v.count}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def analyze_objects(gen_range = nil)
|
|
24
|
+
data = []
|
|
25
|
+
File.open(@filename) do |f|
|
|
26
|
+
f.each_line do |line|
|
|
27
|
+
parsed = JSON.parse(line)
|
|
28
|
+
if gen_range && gen_range.include?(parsed['generation'].to_i)
|
|
29
|
+
data << parsed
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
data.group_by{ |row| "#{row['file']}:#{row['line']}" }
|
|
35
|
+
.sort{|a,b| b[1].length <=> a[1].length }
|
|
36
|
+
.each do |k,v|
|
|
37
|
+
puts "line #{k} objects #{v.count}"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def analyze_generation(gen)
|
|
42
|
+
data = []
|
|
43
|
+
File.open(@filename) do |f|
|
|
44
|
+
f.each_line do |line|
|
|
45
|
+
parsed=JSON.parse(line)
|
|
46
|
+
data << parsed if parsed["generation"] == gen
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
data.group_by{|row| "#{row["file"]}:#{row["line"]}"}
|
|
50
|
+
.sort{|a,b| b[1].count <=> a[1].count}
|
|
51
|
+
.each do |k,v|
|
|
52
|
+
puts "#{k} * #{v.count}"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
if ARGV[1]
|
|
58
|
+
if ARGV[1] == 'objects'
|
|
59
|
+
range = nil
|
|
60
|
+
if ARGV[2]
|
|
61
|
+
range_end = ARGV[2].to_i
|
|
62
|
+
range_start = ARGV[3].to_i
|
|
63
|
+
range = Range.new(range_start, range_end)
|
|
64
|
+
end
|
|
65
|
+
Analyzer.new(ARGV[0]).analyze_objects(range)
|
|
66
|
+
else
|
|
67
|
+
Analyzer.new(ARGV[0]).analyze_generation(ARGV[1].to_i)
|
|
68
|
+
end
|
|
69
|
+
else
|
|
70
|
+
Analyzer.new(ARGV[0]).analyze
|
|
71
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module DemoEnv
|
|
3
|
+
module_function
|
|
4
|
+
|
|
5
|
+
def gem_spec(gem_name, defaults = {})
|
|
6
|
+
args = if local_gem(gem_name)
|
|
7
|
+
[local_gem(gem_name)]
|
|
8
|
+
elsif git_gem(gem_name)
|
|
9
|
+
[git_gem(gem_name)]
|
|
10
|
+
else
|
|
11
|
+
[]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
yield(args) if block_given?
|
|
15
|
+
|
|
16
|
+
args
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def gem_env_name(gem_name)
|
|
20
|
+
gem_name.upcase.gsub('-', '_')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def local_gem(gem_name)
|
|
24
|
+
local_env_name = "DD_DEMO_ENV_GEM_LOCAL_#{gem_env_name(gem_name)}"
|
|
25
|
+
|
|
26
|
+
return unless ENV.key?(local_env_name)
|
|
27
|
+
|
|
28
|
+
{ path: ENV[local_env_name] }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def git_gem(gem_name)
|
|
32
|
+
git_env_name = "DD_DEMO_ENV_GEM_GIT_#{gem_env_name(gem_name)}"
|
|
33
|
+
ref_env_name = "DD_DEMO_ENV_GEM_REF_#{gem_env_name(gem_name)}"
|
|
34
|
+
|
|
35
|
+
return unless [git_env_name, ref_env_name].all? { |var| ENV.key?(var) && !ENV[var].empty? }
|
|
36
|
+
|
|
37
|
+
{ git: ENV[git_env_name], ref: ENV[ref_env_name] }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def process
|
|
41
|
+
ENV['DD_DEMO_ENV_PROCESS']
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def features
|
|
45
|
+
(ENV['DD_DEMO_ENV_FEATURES'] || '').split(',')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def feature?(feature)
|
|
49
|
+
features.include?(feature)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def print_env(header = 'Datadog test environment')
|
|
53
|
+
puts "\n==== #{header} ===="
|
|
54
|
+
puts "Process: #{process}"
|
|
55
|
+
puts "Features: #{features}"
|
|
56
|
+
puts "Rails env: #{ENV['RAILS_ENV']}" if ENV['RAILS_ENV']
|
|
57
|
+
puts "PID: #{Process.pid}"
|
|
58
|
+
if ddtrace = Gem.loaded_specs['ddtrace']
|
|
59
|
+
puts "Runtime ID: #{Datadog::Runtime::Identity.id}" if defined?(Datadog::Runtime::Identity)
|
|
60
|
+
puts "ddtrace version: #{ddtrace.version}"
|
|
61
|
+
puts "ddtrace path: #{ddtrace.full_gem_path}"
|
|
62
|
+
if git_spec = git_gem('ddtrace')
|
|
63
|
+
puts "ddtrace git: #{git_spec[:git]}"
|
|
64
|
+
puts "ddtrace ref: #{git_spec[:ref]}"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
puts "\n"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def profiler_file_transport(dump_path = "/data/profile-pid-#{Process.pid}.pprof")
|
|
71
|
+
Datadog::Profiling::Transport::IO.default(
|
|
72
|
+
write: ->(out, data) do
|
|
73
|
+
result = nil
|
|
74
|
+
puts "Writing pprof #{dump_path}..."
|
|
75
|
+
File.open(dump_path, "w") { |f| result = f.write(data) }
|
|
76
|
+
puts "Pprof #{dump_path} written!"
|
|
77
|
+
result
|
|
78
|
+
end
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def start_mem_dump!
|
|
83
|
+
require 'objspace'
|
|
84
|
+
ObjectSpace.trace_object_allocations_start
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def finish_mem_dump!(dump_path = "/data/mem-pid-#{Process.pid}.dump")
|
|
88
|
+
File.delete(dump_path) if File.exist?(dump_path)
|
|
89
|
+
File.open(dump_path, "w") do |io|
|
|
90
|
+
ObjectSpace.dump_all(output: io)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def mem_dump!(dump_path = "/data/mem-pid-#{Process.pid}.dump")
|
|
95
|
+
start_mem_dump!
|
|
96
|
+
result = yield
|
|
97
|
+
finish_mem_dump!
|
|
98
|
+
result
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# If health check URL provided, wait till it passes.
|
|
5
|
+
if [ -n "$HEALTH_CHECK_URL" ]; then
|
|
6
|
+
STATUS=${HEALTH_CHECK_STATUS:-204}
|
|
7
|
+
INTERVAL=${HEALTH_CHECK_INTERVAL:-5}
|
|
8
|
+
MAX_ATTEMPTS=${HEALTH_CHECK_MAX_ATTEMPTS:-5}
|
|
9
|
+
ATTEMPTS=0
|
|
10
|
+
|
|
11
|
+
echo -e "\n== HTTP Health check =="
|
|
12
|
+
echo "Target: $HEALTH_CHECK_URL"
|
|
13
|
+
echo "Healthy status: $STATUS"
|
|
14
|
+
echo "Poll interval: $INTERVAL seconds"
|
|
15
|
+
echo "** Polling until healthy state... **"
|
|
16
|
+
printf "Attempt ($(($ATTEMPTS + 1))/$MAX_ATTEMPTS): "
|
|
17
|
+
while [[ "$(curl --max-time $INTERVAL -s -o /dev/null -w ''%{http_code}'' $HEALTH_CHECK_URL)" != $STATUS ]]; do
|
|
18
|
+
printf "FAIL"
|
|
19
|
+
ATTEMPTS=$[ATTEMPTS + 1]
|
|
20
|
+
|
|
21
|
+
if (( $ATTEMPTS >= $MAX_ATTEMPTS )); then
|
|
22
|
+
echo -e "\nERROR: Health check max attempts reached for $HEALTH_CHECK_URL" >&2
|
|
23
|
+
exit 1
|
|
24
|
+
else
|
|
25
|
+
printf " (Waiting $INTERVAL seconds...)\n"
|
|
26
|
+
sleep $INTERVAL
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
printf "Attempt ($(($ATTEMPTS + 1))/$MAX_ATTEMPTS): "
|
|
30
|
+
done
|
|
31
|
+
echo "SUCCESS"
|
|
32
|
+
echo -e "== HTTP Health check complete. ==\n"
|
|
33
|
+
fi
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
FROM ruby:2.0
|
|
2
|
+
|
|
3
|
+
# Add Jessie repos
|
|
4
|
+
# Fixes https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease
|
|
5
|
+
RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
|
|
6
|
+
|
|
7
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
8
|
+
|
|
9
|
+
# Install prerequisites
|
|
10
|
+
RUN set -ex && \
|
|
11
|
+
echo "===> Installing dependencies" && \
|
|
12
|
+
apt-get -y update && \
|
|
13
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
14
|
+
curl wget tar gzip gnupg apt-transport-https ca-certificates tzdata locales && \
|
|
15
|
+
\
|
|
16
|
+
echo "===> Installing NodeJS" && \
|
|
17
|
+
apt-get install -y --force-yes --no-install-recommends nodejs && \
|
|
18
|
+
\
|
|
19
|
+
echo "===> Installing Yarn" && \
|
|
20
|
+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
21
|
+
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
22
|
+
apt-get update && \
|
|
23
|
+
apt-get install -y --force-yes --no-install-recommends yarn && \
|
|
24
|
+
\
|
|
25
|
+
echo "===> Installing database libraries" && \
|
|
26
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
27
|
+
postgresql-client sqlite3 && \
|
|
28
|
+
\
|
|
29
|
+
echo "===> Installing dev tools" && \
|
|
30
|
+
mkdir -p /usr/share/man/man1 && \
|
|
31
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
32
|
+
sudo git openssh-client rsync vim \
|
|
33
|
+
net-tools netcat parallel unzip zip bzip2 && \
|
|
34
|
+
\
|
|
35
|
+
echo "===> Cleaning up" && \
|
|
36
|
+
rm -rf /var/lib/apt/lists/*;
|
|
37
|
+
|
|
38
|
+
# Set timezone to UTC by default
|
|
39
|
+
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
|
40
|
+
|
|
41
|
+
# Set language
|
|
42
|
+
RUN locale-gen en_US.UTF-8
|
|
43
|
+
ENV LANG en_US.UTF-8
|
|
44
|
+
ENV LANGUAGE en_US:en
|
|
45
|
+
|
|
46
|
+
# Install RubyGems
|
|
47
|
+
RUN gem update --system 2.7.9
|
|
48
|
+
RUN gem install bundler -v '1.17.3'
|
|
49
|
+
ENV BUNDLE_SILENCE_ROOT_WARNING 1
|
|
50
|
+
|
|
51
|
+
# Setup demo environment includes
|
|
52
|
+
COPY ./include /vendor/dd-demo
|
|
53
|
+
ENV RUBYLIB /vendor/dd-demo
|
|
54
|
+
ENV RUBYOPT -rdatadog/demo_env
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
FROM ruby:2.1
|
|
2
|
+
|
|
3
|
+
# Add Jessie repos
|
|
4
|
+
# Fixes https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease
|
|
5
|
+
RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
|
|
6
|
+
|
|
7
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
8
|
+
|
|
9
|
+
# Install prerequisites
|
|
10
|
+
RUN set -ex && \
|
|
11
|
+
echo "===> Installing dependencies" && \
|
|
12
|
+
apt-get -y update && \
|
|
13
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
14
|
+
curl wget tar gzip gnupg apt-transport-https ca-certificates tzdata locales && \
|
|
15
|
+
\
|
|
16
|
+
echo "===> Installing NodeJS" && \
|
|
17
|
+
apt-get install -y --force-yes --no-install-recommends nodejs && \
|
|
18
|
+
\
|
|
19
|
+
echo "===> Installing Yarn" && \
|
|
20
|
+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
21
|
+
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
22
|
+
apt-get update && \
|
|
23
|
+
apt-get install -y --force-yes --no-install-recommends yarn && \
|
|
24
|
+
\
|
|
25
|
+
echo "===> Installing database libraries" && \
|
|
26
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
27
|
+
postgresql-client sqlite3 && \
|
|
28
|
+
\
|
|
29
|
+
echo "===> Installing dev tools" && \
|
|
30
|
+
mkdir -p /usr/share/man/man1 && \
|
|
31
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
32
|
+
sudo git openssh-client rsync vim \
|
|
33
|
+
net-tools netcat parallel unzip zip bzip2 && \
|
|
34
|
+
\
|
|
35
|
+
echo "===> Cleaning up" && \
|
|
36
|
+
rm -rf /var/lib/apt/lists/*;
|
|
37
|
+
|
|
38
|
+
# Set timezone to UTC by default
|
|
39
|
+
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
|
40
|
+
|
|
41
|
+
# Set language
|
|
42
|
+
RUN locale-gen en_US.UTF-8
|
|
43
|
+
ENV LANG en_US.UTF-8
|
|
44
|
+
ENV LANGUAGE en_US:en
|
|
45
|
+
|
|
46
|
+
# Install RubyGems
|
|
47
|
+
RUN gem update --system 2.7.9
|
|
48
|
+
RUN gem install bundler -v '1.17.3'
|
|
49
|
+
ENV BUNDLE_SILENCE_ROOT_WARNING 1
|
|
50
|
+
|
|
51
|
+
# Setup demo environment includes
|
|
52
|
+
COPY ./include /vendor/dd-demo
|
|
53
|
+
ENV RUBYLIB /vendor/dd-demo
|
|
54
|
+
ENV RUBYOPT -rdatadog/demo_env
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
FROM ruby:2.2
|
|
2
|
+
|
|
3
|
+
# Add Jessie repos
|
|
4
|
+
# Fixes https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease
|
|
5
|
+
RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
|
|
6
|
+
|
|
7
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
|
8
|
+
|
|
9
|
+
# Install prerequisites
|
|
10
|
+
RUN set -ex && \
|
|
11
|
+
echo "===> Installing dependencies" && \
|
|
12
|
+
apt-get -y update && \
|
|
13
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
14
|
+
curl wget tar gzip gnupg apt-transport-https ca-certificates tzdata locales && \
|
|
15
|
+
\
|
|
16
|
+
echo "===> Installing NodeJS" && \
|
|
17
|
+
apt-get install -y --force-yes --no-install-recommends nodejs && \
|
|
18
|
+
\
|
|
19
|
+
echo "===> Installing Yarn" && \
|
|
20
|
+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
21
|
+
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
22
|
+
apt-get update && \
|
|
23
|
+
apt-get install -y --force-yes --no-install-recommends yarn && \
|
|
24
|
+
\
|
|
25
|
+
echo "===> Installing database libraries" && \
|
|
26
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
27
|
+
postgresql-client sqlite3 && \
|
|
28
|
+
\
|
|
29
|
+
echo "===> Installing dev tools" && \
|
|
30
|
+
mkdir -p /usr/share/man/man1 && \
|
|
31
|
+
apt-get install -y --force-yes --no-install-recommends \
|
|
32
|
+
sudo git openssh-client rsync vim \
|
|
33
|
+
net-tools netcat parallel unzip zip bzip2 && \
|
|
34
|
+
\
|
|
35
|
+
echo "===> Cleaning up" && \
|
|
36
|
+
rm -rf /var/lib/apt/lists/*;
|
|
37
|
+
|
|
38
|
+
# Set timezone to UTC by default
|
|
39
|
+
RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
|
40
|
+
|
|
41
|
+
# Set language
|
|
42
|
+
RUN locale-gen en_US.UTF-8
|
|
43
|
+
ENV LANG en_US.UTF-8
|
|
44
|
+
ENV LANGUAGE en_US:en
|
|
45
|
+
|
|
46
|
+
# Install RubyGems
|
|
47
|
+
RUN gem update --system 2.7.9
|
|
48
|
+
RUN gem install bundler -v '1.17.3'
|
|
49
|
+
ENV BUNDLE_SILENCE_ROOT_WARNING 1
|
|
50
|
+
|
|
51
|
+
# Setup demo environment includes
|
|
52
|
+
COPY ./include /vendor/dd-demo
|
|
53
|
+
ENV RUBYLIB /vendor/dd-demo
|
|
54
|
+
ENV RUBYOPT -rdatadog/demo_env
|