---
title: ruby-agent-870
source: https://docs.newrelic.com/docs/release-notes/agent-release-notes/ruby-release-notes/ruby-agent-870
---

## v8.7.0

-   **APM logs-in-context log forwarding on by default**

    Automatic application log forwarding is now enabled by default. This version of the agent will automatically send enriched application logs to New Relic. To learn more about about this feature see [here](https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/get-started-logs-context/), and additional configuration options are available [here](https://docs.newrelic.com/docs/logs/logs-context/configure-logs-context-ruby). To learn about how to toggle log ingestion on or off by account see [here](https://docs.newrelic.com/docs/logs/logs-context/disable-automatic-logging).

-   **Improved async support and Thread instrumentation**

    Previously, the agent was not able to record events and metrics inside Threads created inside of an already running transaction. This release includes 2 new configuration options to support multithreaded applications to automatically instrument threads. A new configuration option,`instrumentation.thread.tracing` (disabled by default), has been introduced that, when enabled, will allow the agent to insert New Relic tracing inside of all Threads created by an application. To support applications that only want some threads instrumented by New Relic, a new class is available, `NewRelic::TracedThread`, that will create a thread that includes New Relic instrumentation, see our [API documentation](https://www.rubydoc.info/gems/newrelic_rpm/NewRelic) for more details.

    New configuration options included in this release:

    | Configuration name               | Default            | Behavior                                                                                                                 |
    | -------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------ |
    | `instrumentation.thread`         | `auto` (enabled)   | Allows the agent to correctly nest spans inside of an asyncronous transaction.                                           |
    | `instrumentation.thread.tracing` | `false` (disabled) | Automatically add tracing to all Threads created in the application. This may be enabled by default in a future release. |

    We'd like to thank @mikeantonelli for sharing a gist with us that provided our team with an entry point for this feature.

-   **Deprecate support for Ruby 2.2**

    Ruby 2.2 reached end of life on March 31, 2018. The agent has deprecated support for Ruby 2.2 and will make breaking changes for this version in its next major release.

-   **Added updated configuration options for transaction events and deprecated previous configs**

    This release deprecates the following instrumentation:

    | Deprecated                     | Replacement                     |
    | ------------------------------ | ------------------------------- |
    | ActiveMerchant 1.64.0 or lower | ActiveMerchant 1.65.0 or higher |
    | ActiveRecord 3.2.22.5 or lower | ActiveRecord 4.0.0 or higher    |
    | Acts As Solr (all versions)    | none                            |
    | Authlogic (all versions)       | none                            |
    | Bunny 2.6.7 or lower           | Bunny 2.7.0 or higher           |
    | Dalli 2.7.6 or lower           | Dalli 2.7.7 or higher           |
    | DataMapper (all versions)      | none                            |
    | Delayed Job 4.1.2 or lower     | Delayed Job 4.1.3 or higher     |
    | Excon 0.55.0 or lower          | Excon 0.56.0 or higher          |
    | Grape 0.19.1 or lower          | Grape 0.19.2 or higher          |
    | HTTPClient 2.8.2.4 or lower    | HTTPClient 2.8.3                |
    | HTTP.rb 2.2.1 or lower         | HTTP.rb 2.2.2 or higher         |
    | Mongo 2.4.0 or lower           | Mongo 2.4.1 or higher           |
    | Padrino 0.14.4 or lower        | Padrino 0.15.0 or higher        |
    | Passenger 5.1.2 or lower       | Passenger 5.1.3 or higher       |
    | Puma 3.8.2 or lower            | Puma 3.9.0 or higher            |
    | Rack 1.6.7 or lower            | Rack 1.6.8 or higher            |
    | Rails 3.2.22.5 or lower        | Rails 4.0.0 or higher           |
    | Rainbows (all versions)        | none                            |
    | Sequel 4.44.0 or lower         | Sequel 4.45.0 or higher         |
    | Sidekiq 4.2.10 or lower        | Sidekiq 5.0.0 or higher         |
    | Sinatra 1.4.8 or lower         | Sinatra 2.0.0 or higher         |
    | Sunspot (all versions)         | none                            |
    | Typhoeus 1.1.2 or lower        | Typhoeus 1.3.0 or higher        |
    | Unicorn 5.2.0 or lower         | Unicorn 5.3.0 or higher         |

    For the gems with deprecated versions, we will no longer test those versions in our multiverse suite. They may, however, still be compatible with the agent. We will no longer fix bug reports for issues with these versions of the gem.

-   **Internally leverage `Object.const_get` and `Object.const_defined?`**

    When dynamically checking for or obtaining a handle to a class constant from a string, leverage the `Object` class's built in methods wherever possible to enjoy simpler, more performant operations. All JRubies and CRubies v2.5 and below need a bit of assistance beyond what `Object` can provide given that those Rubies may yield an unwanted constant from a different namespace than the one that was specified. But for all other Rubies and even for those Rubies in contexts where we can 100% trust the string value coming in, leverage the `Object` class's methods and reap the benefits.

-   **Clarify documentation for `rake.tasks` configuration**

    The `rake.tasks` description in the default `newrelic.yml` file and the [New Relic Ruby Agent Configuration docs](https://docs.newrelic.com/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration#rake-tasks) have been updated to clarify its behavior and usage. The documentation now reads:

    > Specify an array of Rake tasks to automatically instrument. This configuration option converts the Array to a RegEx list. If you'd like to allow all tasks by default, use `rake.tasks: [.+]`. Rake tasks will not be instrumented unless they're added to this list. For more information, visit the (New Relic Rake Instrumentation docs)[/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation].

    We thank @robotfelix for suggesting these changes.

-   **Enable Environment Variables setting Array configurations to be converted to Arrays**

    Prior to this change, when comma-separated lists were passed as environment variables, an error would be emitted to the `newrelic_agent.log` and a String would be set as the value. Now, Arrays will be accurately coerced.

-   **Bugfix: Allow TransactionEvents to be sampled at the expected rate**

    The `transaction_events.max_samples_stored` capacity value within the TransactionEventAggregator did not match up with its expected harvest cycle interval, causing TransactionEvents to be over-sampled. This bugfix builds upon the updates made in [#952](https://github.com/newrelic/newrelic-ruby-agent/pull/952) so that the interval and capacity behave as expected for the renamed `transaction_events*` configuration options.

-   **Bugfix: Error events missing attributes when created outside of a transaction**

    Previously the agent was not assigning a priority to error events that were created by calling notice_error outside the scope of a transaction. This caused issues with sampling when the error event buffer was full, resulting in a `NoMethodError: undefined method '<' for nil:NilClass` in the newrelic_agent.log. This bugfix ensures that a priority is always assigned on error events so that the agent will be able to sample these error events correctly. Thank you to @olleolleolle for bringing this issue to our attention.

## Support statement

New Relic recommends that you upgrade the agent regularly and at a minimum every 3 months. As of this release, the oldest supported version is [5.7.0.350](https://docs.newrelic.com/docs/release-notes/agent-release-notes/ruby-release-notes/ruby-agent-570350).
