Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.22.0
- Feature: One-step instrumentation for Kubernetes - The Kubernetes APM auto-attach automatically instruments applications and manages agent upgrades within Kubernetes deployments. This feature has exited preview and is now generally avaliable. Learn more about Kubernetes auto-attach. PR#2635 PR#3287 
- Feature: Deprecation notice for Ruby 2.4 and Ruby 2.5 - Ruby agent support for Ruby versions 2.4 and 2.5 is deprecated and will be removed in agent version 10.0.0. The new miniumum required Ruby version will become Ruby 2.6 and we will stop testing with Ruby 2.4 and 2.5. PR#3288 
- Feature: Deprecation notice for the - newrelic deploymentscommand- Support for recording deployments using the - newrelic deploymentscommand is now deprecated and will be removed in agent version 10.0.0.- Going forward, there are a number of automated and manual ways ways to record changes in New Relic. Please see our guide to Change Tracking for a list of available options. PR#3262 
- Feature: Deprecation reminder for cross application tracing - Cross application tracing has been deprecated since major version 8.0.0 of the Ruby agent. We will remove support for it entirely in version 10.0.0 of the agent. PR#3288 
- Feature: Ensure compatibility with Ruby 3.5 change to Method#source_location - Updated the agent to correctly parse the return value of Method#source_location, which is changing in Ruby 3.5 from a two-element to a five-element array. This change maintains support for older Ruby versions while adding support for the future release. PR#3257 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.21.0
- Feature: In Serverless APM mode, use event source name as transaction name prefix - The agent will now use the event source name as a prefix for the transaction name in Serverless APM mode. This will help to better identify the source of the transaction in the New Relic UI. PR#3245 
- Bugfix: Revert changed logic for how we track the thread the span starts in - This change restores the previous behavior of tracking the thread the span starts in, addressing issues that arose from the updated logic. Thank you @david-zw-liu for bringing this to our attention. PR#3248 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.20.0
- Feature: Add ECS Docker ID for Fargate - Previously, the Ruby agent did not record the Docker ID when running in an AWS ECS Fargate environment. The Docker ID will now be recorded correctly. PR#3172 
- Feature: Add NewRelic::Helper.version_satisfied? - The agent has a new helper method to simplify version comparison. - NewRelic::Helper.version_satisfied?accepts three arguments: a left-side version number, the comparison operator as a string, and a right-side version number. Our thanks go to @kekke-n for this contribution. PR#3182
- Feature: Add code.stacktrace attribute on datastore spans when duration exceeds configured threshold - The agent will now add the - code.stacktraceattribute to datastore spans when the duration exceeds the configured threshold. The threshold is configured using the- transaction_tracer.stack_trace_thresholdconfiguration option. PR#3220
- Feature: Consolidate "Unknown" constant values - All references to the various capitalization styles for "Unknown" have been consolidated into two constants: - NewRelic::UNKNOWNand- NewRelic::UNKNOWN_LOWER. Thank you, @tsubasa1122, for your contribution! PR#3185
- Bugfix: Fix Brewfile source links - Previously, the multiverse README's links to the Brewfile were broken. Our thanks go to @emmanuel-ferdman for submitting a PR to fix them! PR#3191 
- Bugfix: Fix error when using HTTPX 1.5.0 - The agent previously encountered an error when using the new HTTPX version 1.5.0. This was due to a change in the way HTTPX stores the response. The agent has been updated to handle this change correctly, and no longer encounters an error when using HTTPX 1.5.0. PR#3203 
- Bugfix: Bugfixes and improvements to debug level agent logs - Improves the information logged at the debug level by the agent when the agent reads in a configuration source. PR#3221 
- Bugfix: Fix risk of server-side forgery for Slack workflow script - Internally, we keep track of gems that are released using a GitHub actions workflow that posts updates on Slack. [@odaysec] identified a way we could reduce the risk of server-side forgery for this workflow. Thank you! PR#3184 
- Bugfix: Replace JSON.load calls with JSON.parse - Generally, JSON.parse is seen as safer than JSON.load. Thank you, @odaysec, for bringing this to our attention! PR#3183 PR#3230 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.19.0
- Feature: Add Thread ID as attribute to all spans - The agent will now record the Thread ID as an attribute on each span. PR#3122 
- Feature: Add support for W3C TraceContext Trace Flag - Previously, the agent would not use the trace flag field of the traceparent header for sampling decisions. This could lead to fragmented traces in the UI. While the default behavior remains unchanged, two new configuration options, - distributed_tracing.sampler.remote_parent_sampledand- distributed_tracing.sampler.remote_parent_not_sampled, have been introduced to allow more control over the way sampling decisions are made. PR#3135
- Bugfix: Include request.uri in Transaction events by default - The New Relic data dictionary expects Transaction events to have the - request.uriattribute. The Ruby agent now fulfills this expectation. If you would like to exclude- request.urifrom Transaction events, you can do so by setting- transaction_events.attributes.excludeto- 'request.uri'. PR#3103
- Bugfix: Fix error in Active Job instrumentation when using perform_all_later - Previously, when Active Job's - perform_all_latermethod was called and the agent was running, a- NoMethodErrorwould be raised with the message- undefined method 'queue_name' for nil. The error has been fixed and the name of the segment will reflect the first job in the queue. Our thanks goes to @tan-linx for bringing this to our attention and providing a fix. PR#3110
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.18.0
- Feature: Add elasticsearch.capture_cluster_name configuration option - A new configuration option, - elasticsearch.capture_cluster_name, has been added to control capturing Elasticsearch cluster names. Cluster names are captured by default, but can now be disabled as needed. PR#3038
- Feature: Add support for sidekiq-delay_extensions - Sidekiq delay extensions were removed from Sidekiq in 7.x and are now avaliable through the sidekiq-delay_extensions gem. Thanks to @sobrinho, the agent now has continued support for delay extensions.PR#3056 
- Feature: Parallelize calls for vendor metadata - Previously, the agent would make calls for vendor metadata in a serial fashion. This could lead to a delay in starting the agent. Now, the agent will make these calls in parallel, reducing the time it takes to start the agent. PR#3094 
- Bugfix: Prevent a nil segment from causing errors in Net::HTTP instrumentation - When using JRuby, a race condition can happen that causes the segment creation to fail and return - nil. This would cause an error to occur when methods were later called on the- nilsegment. These methods will no longer be called if the segment is- nil, preventing that error from occurring. PR#3046
- Bugfix: JRuby multithreading improvements - Added some additional nil checks and mutexes to prevent issues when using the agent on JRuby with multiple threads. Thanks to @NC-piercej for bringing this to our attention Issue#3021 PR#3053 
- Bugfix: Stop reporting rescued Sidekiq::OverLimit exceptions - When Sidekiq's concurrent rate limiters encounter an - OverLimitexception, Sidekiq typically handles this by re-enqueuing the job. Previously, all occurrences of- Sidekiq::OverLimitwere logged as errors in New Relic, even when Sidekiq's middleware resolved the exception. New Relic will no longer report errors that are handled by Sidekiq's own middleware. Thanks to @97jaz for reporting this issue. Issue#3037 PR#3047
- Bugfix: Protect against nil agents or health checks - In some cases the agent or health checks may be - nilwhen they are called. Safe navigation operators have been added for protection on those occasions. PR#3049
- Bugfix: Ignore Solid Queue - ThreadError: queue emptyerror message by default- When using the solid_queue gem, the agent previously generated excessive warn-level logs when the queue was empty. The agent now ignores - queue emptyerror messages of the- ThreadErrorclass by default. This behavior can be adjusted using the- error_collector.ignore_messagesconfiguration option. PR#3060
- Bugfix: Refactor URI host handling to accommodate downcasing frozen strings - When URI host string was frozen, a FrozenError would be raised when the agent attempted to downcase the host as part of its data normalization process. Now, the update is friendly for frozen strings. Thank you @pedrol3001 for your contribution! PR#3097 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.17.0
- Feature: Support Ruby 3.4.0 - The agent now supports Ruby 3.4.0. We've made incremental changes throughout the preview stage to reach compatibility. This release includes an update to the Thread Profiler for compatibility with Ruby 3.4.0's new backtrace format. Issue#2992 PR#2997 
- Feature: Add instrumentation for aws-sdk-firehose - The agent now has instrumentation for the aws-sdk-firehose gem. PR#2973 
- Feature: Kubernetes APM auto-attach - new agent version precedent - Previously, when a customer installed the Ruby agent via Kubernetes APM auto-attach and also had the Ruby agent listed in their - Gemfile, the agent version in- Gemfilewould take precedence. Now, the agent version installed by auto-attach takes priority. PR#3018
- Feature: Add health checks when the agent runs within Agent Control - When the agent is started within an Agent Control environment, a health check file will be created at the configured file location for every agent process. By default, this location is: '/newrelic/apm/health'. The health check files will be updated at the configured frequency, which defaults to every five seconds. PR#2995 
- Feature: Add Redshift as recognized ActiveRecord adapter - When the agent does not recognize an ActiveRecord adapter, the host, port, and database name information is not added to the datastore span. Redshift will now be treated like PostgreSQL, and the agent will save the host, port, and database name on the span. PR#3032 
- Feature: Add instrumentation for aws-sdk-kinesis - The agent now has instrumentation for the aws-sdk-kinesis gem. It will record message broker segments for - get_records,- put_record, and- put_recordsoperations. All other operations will record standard segments. PR#2974
- Bugfix: Stop emitting inaccurate debug-level log about deprecated configuration options - In the previous major release, we dropped support for many - disable_library_nameconfiguration options in favor of- instrumentation.library_name. Previously, a DEBUG level log warning appeared whenever- disable_*options were set to- true, even for libraries (e.g. Action Dispatch) without equivalent- instrumentation.*options:
>DEBUG : [DEPRECATED] configuration disable_library_name for library_name will be removed in the next major release. Use instrumentation. library_name with one of ["auto", "disabled", "prepend", "chain"]This inaccurate warning has been removed. If you are disabling instrumentation using instrumentation.library_name: disabled or NEW_RELIC_INSTRUMENTATION_LIBRARY_NAME=disabled, please verify the option exists by consulting our configuration documentation. If the option does not exist, check the 'Disabling' section to see if there is a related option. We apologize for the confusion. PR#3005
- Bugfix: Do not attempt to decorate logs with - nilmessages- The agent no longer attempts to add New Relic linking metadata to logs with - nilmessages. Thank you, @arlando for bringing this to our attention! Issue#2985 PR#2986
- Bugfix: Stop renaming final Grape segment - Previously, the agent renamed the final segment in Grape transactions to - "Middleware/Grape/#{class_name}/call". This was a part of an old instrumentation pattern that is no longer relevant. Many thanks to @seriousdev-gh for bringing this issue to our attention and along with a great reproduction and suggested fix. PR#2987.
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.16.1
- Bugfix: Added the support for the Trilogy database adapter. - The agent now fully supports the Trilogy, a client library for MySQL-compatible database servers, and correctly lists MySQL as the corresponding database in the UI. PR#2966. 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.16.0
Version 9.16.0 introduces the following features and bug fixes:
- Feature: Instrumentation for aws-sdk-lambda - When the aws-sdk-lambda gem is available and used to invoke remote AWS Lambda functions, the timing and error details of the invocations will be reported to New Relic. PR#2926. 
- Feature: Add new configuration options to attach custom tags (labels) to logs - The Ruby agent now allows you to opt-in to adding your custom tags (labels) to agent-forwarded logs. With custom tags on logs, platform engineers can easily filter, search, and correlate log data for faster and more efficient troubleshooting, improved performance, and optimized resource utilization. PR#2925 
- Feature: Update View Component instrumentation+ - The - .identifiermethod will be formally exposed as part of the View Component public API. The agent will now use this method for building metric names when available, ensuring ongoing compatibility with all View Component versions. PR#2956
- Bugfix: Record explain plan traces on Rails 7.2+ - Rails 7.2 removed adapter-specific connection methods (ex. - ActiveRecord::Base.postgresql_connection) and replaced them with- ActiveRecord::Base.with_connection. Our explain plan feature relies on making a connection to the database to create an explain plan trace. Due to a bug in our tests, we missed this regression. Now, the agent uses the new method to fetch explain plans on Rails 7.2+. Thank you, @gsar and @gstark for bringing this to our attention! Issue#2922 PR#2940
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.15.0
Version 9.15.0 updates View Component instrumentation to use a default metric name when one is unavailable, adds a configuration option to associate the AWS account ID with the DynamoDB calls from the AWS SDK, resolves a bug in rdkafka instrumentation when using the karafka-rdkafka gem, resolves a bug in the ruby-kafka instrumentation, fixes a bug with Grape instrumentation, and addresses a bug preventing the agent from running in serverless mode in an AWS Lambda layer.
- Feature: New configuration option cloud.aws.account_id - A new configuration option has been added, - cloud.aws.account_id, that will allow New Relic to provide more details about certain calls made using the AWS SDK. For example, relationships between AWS services instrumented with New Relic's CloudWatch Metric Streams will have relationships formed in the service map with APM applications. Currently, the DynamoDB instrumentation is the only instrumentation that will make use of this configuration option, but this will be used in future instrumentation as well. PR#2904
- Feature: Use default - View/componentmetric name for unidentified View Components- Previously, when a View Component metric name could not be identified, the agent would set the name as - nil. Now, the agent defaults to using- View/componentas the metric name when one can not be identified. PR#2907
- Bugfix: Instrumentation errors when using the karafka-rdkafka gem - Due to version differences between the rdkafka gem and karafka-rdkafka gem, the agent could encounter an error when it tried to install rdkafka instrumentation. This has now been resolved. Thank you to @krisdigital for bringing this issue to our attention. PR#2880 
- Bugfix: Stop calling deprecated all_specs method to check for the presence of newrelic-grape - In 9.14.0, we released a fix for calls to the deprecated - Bundler.rubygems.all_specs, but the fix fell short for the agent's Grape instrumentation and deprecation warnings could still be raised. The condition has been simplified and deprecation warnings should no longer be raised. Thank you, @excelsior for bringing this to our attention. Issue#2885 PR#2906
- Bugfix: Instrumentation errors when using the ruby-kafka gem - Kafka::Consumer#each_message takes keyword arguments, while the prepended method is defined with a single splat positional argument. In Ruby >= 3.0, this signature mismatch raises an ArgumentError. Thank you @patrickarnett for providing this bugfix. PR#2915 
- Bugfix: Restore AWS Lambda layer operational functionality - Version 9.14.0 of the agent introduced an optimization related to how the agent handles boolean configuration parameters which inadvertently caused the agent to stop operating properly in an AWS Lambda layer context. Issue#2919PR#2920 
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.14.0
Version 9.14.0 adds Apache Kafka instrumentation for the rdkafka and ruby-kafka gems, introduces a configuration-based, automatic way to add custom instrumentation method tracers, correctly captures MIME type for ActionDispatch 7.0+ requests, properly handles Boolean coercion for newrelic.yml configuration, fixes a JRuby bug in the configuration manager, fixes a bug related to Bundler.rubygems.installed_specs, and fixes a bug to make the agent compatible with ViewComponent v3.15.0+.
- Feature: Add Apache Kafka instrumentation for the rdkafka and ruby-kafka gems - The agent now has instrumentation for both the rdkafka and ruby-kafka gems. The agent will record transactions and message broker segments for produce and consume calls made using these gems. PR#2824 PR#2842 
- Feature: Add a configuration option to permit custom method tracers to be defined automatically - A new - :automatic_custom_instrumentation_method_listconfiguration parameter has been added to permit the user to define a list of fully qualified (namespaced) Ruby methods for the agent to automatically add custom instrumentation for without requiring any code modifications to be made to the classes that define the methods.- The list should be an array of - CLASS#METHOD(for instance methods) and/or- CLASS.METHOD(for class methods) strings.- Use fully qualified class names (using the - ::delimiter) that include any module or class namespacing.- Here is some Ruby source code that defines a - render_pnginstance method for an- Imageclass and a- notifyclass method for a- Userclass, both within a- MyCompanymodule namespace:module MyCompanyclass Imagedef render_png# code to render a PNGendendclass Userdef self.notify# code to notify usersendendend- Given that source code, the - newrelic.ymlconfig file might request instrumentation for both of these methods like so:automatic_custom_instrumentation_method_list:- MyCompany::Image#render_png- MyCompany::User.notify- That configuration example uses YAML array syntax to specify both methods. Alternatively, a comma-delimited string can be used instead: automatic_custom_instrumentation_method_list: 'MyCompany::Image#render_png, MyCompany::User.notify'- Whitespace around the comma(s) in the list is optional. When configuring the agent with a list of methods via the - NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LISTenvironment variable, this comma-delimited string format should be used:export NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST='MyCompany::Image#render_png, MyCompany::User.notify'
- Feature: Collect just MIME type for ActionDispatch 7.0+ requests - Rails 7.0 introduced changes to the behavior of - ActionDispatch::Request#content_type, adding extra request-related details the agent wasn't expecting to collect. Additionally, the agent's use of- content_typewas triggering deprecation warnings. The agent now uses- ActionDispatch::Request#media_typeto capture the MIME type. Thanks to @internethostage for letting us know about this change. Issue#2500 PR#2855
- Bugfix: Corrected Boolean coercion for - newrelic.ymlconfiguration- Previously, any String assigned to New Relic configurations expecting a Boolean value were evaluated as - true. This could lead to unexpected behavior. For example, setting- application_logging.enabled: 'false'in- newrelic.ymlwould incorrectly evaluate to- application_logging.enabled: truedue to the truthy nature of Strings.- Now, the agent strictly interprets Boolean configuration values. It recognizes both actual Boolean values and certain Strings/Symbols: - 'true',- 'yes', or- 'on'(evaluates to- true)
- 'false',- 'no', or- 'off'(evaluates to- false)
 - Any other inputs will revert to the setting's default configuration value. PR#2847 
- Bugfix: JRuby not saving configuration values correctly in configuration manager - Previously, a change made to fix a different JRuby bug caused the agent to not save configuration values correctly in the configuration manager when running on JRuby. This has been fixed. PR#2848 
- Bugfix: Update condition to verify Bundler.rubygems.installed_specs is available - To address a recent Bundler deprecation warning, we started using - Bundler.rubygems.installed_specsinstead of- Bundler.rubygems.all_specsin environments that seemed appropriate. We discovered the version constraint we used was too low. Now, rather than check the version, we check for the method using- respond_to?. PR#2853
- Bugfix: Support view_component v3.15.0+ - Previously the agent had been making use of a private API to obtain a component identifier value. This private API was dropped in v3.15.0 of view_component, resulting in errors from the New Relic Ruby agent's continued attempts to use it. Many thanks to community member @navidemad for bringing this issue to our attention and supplying a bugfix with PR#2870.