v7.0.0
Ruby Agent 6.x to 7.x Migration Guide Available
Please see our Ruby Agent 6.x to 7.x migration guide for helpful strategies and tips for migrating from earlier versions of the Ruby agent to 7.0.0. We cover new configuration settings, diagnosiing and installing SSL CA certificates and deprecated items and their replacements in this guide.
Ruby 2.0 and 2.1 dropped
Support for Ruby 2.0 and 2.1 dropped with this release. We do not know of code changes that would prevent the agent from continuing to work with these releases. However, Rubies 2.0 and 2.1 are no longer included in our test matrices and are not supported for 7.0.0 and onward.
Implemented prepend auto-instrumentation strategies for most Ruby gems/libraries
This release brings the auto-instrumentation strategies for most gems into the modern era for Ruby by providing both prepend and method-chaining (also known as method-aliasing) strategies for auto instrumenting. Prepend, which has been available since Ruby 2.0, is now the default strategy employed in auto-instrumenting. It's a known issue that some external gems lead to Stack Level too Deep exceptions when prepend and method-chaining are mixed. In such known cases, the auto-instrumenting strategy will fall back to method-chaining automatically.
This release also deprecates many overlapping and inconsistently named configuration settings in favor of being able to control behavior of instrumentation per library with one setting that can be one of auto (the default), disabled, prepend, or chain.
Please see the above-referenced migration guide for further details.
Removed SSL cert bundle
The agent will no longer ship this bundle and will rely on system certs.
Removed deprecated config options
The following config options were previously deprecated and are no longer available:
disable_active_record_4
disable_active_record_5
autostart.blacklisted_constants
autostart.blacklisted_executables
autostart.blacklisted_rake_tasks
strip_exception_messages.whitelist
Removed deprecated attribute
The attribute
httpResponseCode
was previously deprecated and replaced withhttp.statusCode
. This deprecated attribute has now been removed.Removed deprecated option in notice_error
Previously, the
:trace_only
option toNewRelic::Agent.notice_error
was deprecated and replaced with:expected
. This deprecated option has been removed.Removed deprecated API methods
Previously the API methods
create_distributed_trace_payload
andaccept_distributed_trace_payload
were deprecated. These have now been removed. Instead, please seeinsert_distributed_trace_headers
andaccept_distributed_trace_headers
, respectively.Bugfix: Prevent browser monitoring middleware from installing to middleware multiple times
In rare cases on jRuby, the BrowserMonitoring middleware could attempt to install itself multiple times at start up. This bug fix addresses that by using a mutex to introduce thread safety to the operation. Sinatra in particular can have this race condition because its middleware stack is not installed until the first request is received.
Skip constructing Time for transactions
Thanks to @viraptor, we are no longer constructing an unused Time object with every call to starting a new Transaction.
Bugfix: nil Middlewares injection now prevented and gracefully handled in Sinatra
Previously, the agent could potentially inject multiples of an instrumented middleware if Sinatra received many requests at once during start up and initialization due to Sinatra's ability to delay full startup as long as possible. This has now been fixed, and the Ruby agent correctly instruments only once as well as gracefully handles nil middleware classes in general.
Bugfix: Ensure transaction nesting max depth is always consistent with length of segments
Thanks to @warp for noticing and fixing the scenario where Transaction
nesting_max_depth
can get out of sync with segment length resulting in an exception when attempting to nest the initial segment which does not exist.
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 4.8.0.