From 25a58934b73c8759121f525bd1dd93326aa41a90 Mon Sep 17 00:00:00 2001 From: ddsign Date: Tue, 19 May 2026 18:51:44 -0400 Subject: [PATCH 1/3] Add Ruby support for SymDB (autocomplete and search) Add per-language enablement page at symdb/ruby.md modeled on symdb/python.md. Add Ruby card to the language picker partial. Update the Preview callout on symdb/_index.md to include Ruby. Cross-link from enabling/ruby.md to the SymDB overview, matching the pattern used in enabling/python.md and enabling/java.md. Minimum dd-trace-rb version is TBD pending the release that ships DD_SYMBOL_DATABASE_UPLOAD_ENABLED. Co-Authored-By: Claude Opus 4.7 --- .../dynamic_instrumentation/enabling/ruby.md | 2 + .../dynamic_instrumentation/symdb/_index.md | 3 +- .../dynamic_instrumentation/symdb/ruby.md | 51 +++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md b/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md index 02905048258..7a8d9cc6d8c 100644 --- a/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md @@ -31,6 +31,7 @@ Before you begin, review the [Dynamic Instrumentation prerequisites][12]. Ruby a 1. If you don't already have APM enabled, in your Agent configuration, set the `DD_APM_ENABLED` environment variable to `true` and listening to the port `8126/TCP`. 2. Run your service with Dynamic Instrumentation enabled by setting the `DD_DYNAMIC_INSTRUMENTATION_ENABLED` environment variable to `true`. Specify `DD_SERVICE`, `DD_ENV`, and `DD_VERSION` Unified Service Tags so you can filter and group your instrumentations and target active clients across these dimensions. 3. After starting your service with Dynamic Instrumentation enabled, you can start using Dynamic Instrumentation on the [APM > Dynamic Instrumentation page][3]. +4. For a better experience, Datadog recommends enabling [autocomplete and search (in Preview)][14]. **Note**: Dynamic Instrumentation initializes when the application processes its first HTTP request. Ensure your application receives at least one request after startup before creating probes. @@ -124,3 +125,4 @@ The following features available in other languages are not supported for Ruby: [11]: /dynamic_instrumentation/expression-language/ [12]: /dynamic_instrumentation/#prerequisites [13]: https://github.com/DataDog/dd-trace-rb +[14]: /dynamic_instrumentation/symdb/ diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/_index.md b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/_index.md index 73128314f4b..f90575d31b0 100644 --- a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/_index.md +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/_index.md @@ -14,7 +14,7 @@ site_support_id: autocomplete_search --- {{< beta-callout url="#" btn_hidden="true" >}} -Autocomplete and search are in Preview for Python and .NET. +Autocomplete and search are in Preview for Python, .NET, and Ruby. {{< /beta-callout >}} ## Overview @@ -43,6 +43,7 @@ Select your runtime below: {{< image-card href="/dynamic_instrumentation/symdb/python" src="integrations_logos/python.png" alt="Python" >}} {{< image-card href="/dynamic_instrumentation/symdb/dotnet" src="integrations_logos/dotnet-core.png" alt="Dotnet" >}} {{< image-card href="/dynamic_instrumentation/symdb/dotnet" src="integrations_logos/dotnet-framework.png" alt="Dotnet" >}} + {{< image-card href="/dynamic_instrumentation/symdb/ruby" src="integrations_logos/ruby.png" alt="Ruby" >}} {{< /card-grid >}} ## Explore autocomplete and search diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md new file mode 100644 index 00000000000..fc7d9ee723f --- /dev/null +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md @@ -0,0 +1,51 @@ +--- +title: Enable Autocomplete and Search for Ruby +description: Configure Ruby applications to enable IDE-like autocomplete and search features for Dynamic Instrumentation. +is_beta: true +private: false +code_lang: ruby +type: multi-code-lang +code_lang_weight: 60 +aliases: + - /dynamic_instrumentation/symdb/ruby + - /tracing/dynamic_instrumentation/symdb/ruby +--- +{{< beta-callout url="#" btn_hidden="true" >}} +Autocomplete and search are in Preview. +{{< /beta-callout >}} + +## Requirements + +- [Dynamic Instrumentation][1] is enabled for your service. +- Tracing library [`dd-trace-rb`][6] TBD or higher is installed. +- Ruby 2.7 or higher. On Ruby 2.6, parameter names are not available for autocomplete because the runtime does not expose them. + +## Installation + +Run your service with Dynamic Instrumentation enabled, and additionally enable autocomplete and search: + +1. Run your service with Dynamic Instrumentation enabled by setting the `DD_DYNAMIC_INSTRUMENTATION_ENABLED` environment variable to `true`. +2. Specify `DD_SERVICE` and `DD_VERSION` [Unified Service Tags][5]. +3. Invoke your service: + + ```shell + export DD_SERVICE= + export DD_ENV= + export DD_VERSION= + export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true + export DD_SYMBOL_DATABASE_UPLOAD_ENABLED=true + bundle exec rails server + ``` + +After starting your service with the required features enabled, you can use Dynamic Instrumentation's IDE-like features on the [**APM** > **Dynamic Instrumentation**][4] page. + +## Additional notes + +### Forking servers + +When your application uses a forking server (Puma in clustered mode, Unicorn, Passenger), each worker process uploads its own symbol set after the fork. Workers that load additional code after forking continue to upload incrementally as new classes are loaded. + +[1]: /dynamic_instrumentation +[4]: https://app.datadoghq.com/dynamic-instrumentation +[5]: /getting_started/tagging/unified_service_tagging +[6]: https://github.com/DataDog/dd-trace-rb From d563f763211c0e34cf70f04d0b30121d4c406ee5 Mon Sep 17 00:00:00 2001 From: ddsign Date: Wed, 15 Jul 2026 16:44:26 -0400 Subject: [PATCH 2/3] Set minimum dd-trace-rb version to 2.37.0 for SymDB --- .../trace_collection/dynamic_instrumentation/symdb/ruby.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md index fc7d9ee723f..9fee83c0228 100644 --- a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md @@ -17,7 +17,7 @@ Autocomplete and search are in Preview. ## Requirements - [Dynamic Instrumentation][1] is enabled for your service. -- Tracing library [`dd-trace-rb`][6] TBD or higher is installed. +- Tracing library [`dd-trace-rb`][6] 2.37.0 or higher is installed. - Ruby 2.7 or higher. On Ruby 2.6, parameter names are not available for autocomplete because the runtime does not expose them. ## Installation From 81160764d1398e198122a13ef84944a728d116bd Mon Sep 17 00:00:00 2001 From: ddsign Date: Wed, 15 Jul 2026 16:47:42 -0400 Subject: [PATCH 3/3] Document SymDB as enabled by default with Dynamic Instrumentation for Ruby --- .../dynamic_instrumentation/enabling/ruby.md | 2 +- .../dynamic_instrumentation/symdb/ruby.md | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md b/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md index 7a8d9cc6d8c..98adad4f285 100644 --- a/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/enabling/ruby.md @@ -31,7 +31,7 @@ Before you begin, review the [Dynamic Instrumentation prerequisites][12]. Ruby a 1. If you don't already have APM enabled, in your Agent configuration, set the `DD_APM_ENABLED` environment variable to `true` and listening to the port `8126/TCP`. 2. Run your service with Dynamic Instrumentation enabled by setting the `DD_DYNAMIC_INSTRUMENTATION_ENABLED` environment variable to `true`. Specify `DD_SERVICE`, `DD_ENV`, and `DD_VERSION` Unified Service Tags so you can filter and group your instrumentations and target active clients across these dimensions. 3. After starting your service with Dynamic Instrumentation enabled, you can start using Dynamic Instrumentation on the [APM > Dynamic Instrumentation page][3]. -4. For a better experience, Datadog recommends enabling [autocomplete and search (in Preview)][14]. +4. For a better experience, Dynamic Instrumentation automatically enables [autocomplete and search (in Preview)][14]. **Note**: Dynamic Instrumentation initializes when the application processes its first HTTP request. Ensure your application receives at least one request after startup before creating probes. diff --git a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md index 9fee83c0228..d93bace19a2 100644 --- a/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md +++ b/content/en/tracing/trace_collection/dynamic_instrumentation/symdb/ruby.md @@ -22,7 +22,7 @@ Autocomplete and search are in Preview. ## Installation -Run your service with Dynamic Instrumentation enabled, and additionally enable autocomplete and search: +Autocomplete and search are enabled automatically when you run your service with Dynamic Instrumentation enabled: 1. Run your service with Dynamic Instrumentation enabled by setting the `DD_DYNAMIC_INSTRUMENTATION_ENABLED` environment variable to `true`. 2. Specify `DD_SERVICE` and `DD_VERSION` [Unified Service Tags][5]. @@ -33,14 +33,21 @@ Run your service with Dynamic Instrumentation enabled, and additionally enable a export DD_ENV= export DD_VERSION= export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true - export DD_SYMBOL_DATABASE_UPLOAD_ENABLED=true bundle exec rails server ``` -After starting your service with the required features enabled, you can use Dynamic Instrumentation's IDE-like features on the [**APM** > **Dynamic Instrumentation**][4] page. +After starting your service with Dynamic Instrumentation enabled, you can use Dynamic Instrumentation's IDE-like features on the [**APM** > **Dynamic Instrumentation**][4] page. ## Additional notes +### Disabling autocomplete and search + +To disable autocomplete and search for your service, set the `DD_SYMBOL_DATABASE_UPLOAD_ENABLED` environment variable to `false`: + +```shell +export DD_SYMBOL_DATABASE_UPLOAD_ENABLED=false +``` + ### Forking servers When your application uses a forking server (Puma in clustered mode, Unicorn, Passenger), each worker process uploads its own symbol set after the fork. Workers that load additional code after forking continue to upload incrementally as new classes are loaded.