Changelog

Improving AppSignal, one deploy at a time.

Jul 29, 2025

Type signatures and improved Capistrano & Hatchbox deploys

Ruby4.6.0

Added

  • Add Sorbet and RBS type signatures for the gem's public APIs. If your editor supports showing type signatures, they will now show up in for the AppSignal Ruby gem.
  • When a deployment tool (Capistrano, Hatchbox.io) provides the REVISION file in the deployed application, AppSignal will now use that to set the revision config.

Changed

  • Improve the YARD documentation for public APIs. This will make the documentation clearer and more useful for developers using the Ruby gem. Private APIs have been hidden from the generated output.
  • When an error occurs while initializing AppSignal or when running a probe, use the error log level to log the error's backtrace.

Fixed

  • When a Hash-like value (such as ActiveSupport::HashWithIndifferentAccess or Sinatra::IndifferentHash) is passed to a transaction helper (such as add_params, add_session_data, ...) it is now converted to a Ruby Hash before setting it as the value or merging it with the existing value. This allows Hash-like objects to be merged, instead of logging a warning and only storing the new value.

    Ruby
    # Example scenario Appsignal.add_params(:key1 => { :abc => "value" }) Appsignal.add_params(ActiveSupport::HashWithIndifferentAccess.new(:key2 => { :def => "value" })) # Params { :key1 => { :abc => "value" }, # Keys from HashWithIndifferentAccess are stored as Strings "key2" => { "def" => "value" } }

View the Ruby gem v4.6.0 changelog for more information.

Jul 01, 2025

Improve logger and ignore Rack connection errors

Ruby4.5.17

Fixed

  • When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast those messages even if the log level of those messages is lower than the logger's threshold. This allows other loggers to set their own logging thresholds.

    When the logger is silenced, messages below the silencing threshold are not broadcasted to other loggers.

  • When an Appsignal::Logger uses .broadcast_to to broadcast messages to other loggers, broadcast the original message received by the logger, without formatting it or converting it to a string.

  • Call the Appsignal::Logger formatter with the original message object given, rather than converting it to a string before calling the formatter.

  • When an error is passed to an Appsignal::Logger as the message, format it regardless of the logging level. Previously it would only be formatted when passed to #error.

  • Ignore Errno::ECONNRESET errors in the Rack wrapper.

View the Ruby gem v4.5.17 changelog for more information.

May 27, 2025

Ruby gem v4.5.14

Ruby4.5.14

Fixed

  • Resolve problems with transactions not being properly closed when using libraries that change Fibers during the transactions. Previously, completed transactions would be attempted to be reused when creating a transaction, when the Fiber would be switched during a transaction.
  • Fix a config error log message when the config is not active and should not validate the config.

View the Ruby gem v4.5.14 changelog for more information.

May 05, 2025

Remove redundant cron check-in pairs

Ruby4.5.10

Changed

  • Remove redundant cron check-in pairs. When more than one pair of start and finish cron check-in events is reported for the same identifier in the same period, only one of them will be reported to AppSignal.

View the Ruby gem v4.5.10 changelog for more information.

Apr 04, 2025

Improvements for AppSignal shutdown behavior

Ruby4.5.8

Added

  • Add the enable_at_exit_hook option to configure if Appsignal.stop is called when the Ruby application exits. Calling Appsignal.stop will stop the application for a moment to flush all the data to our agent before shutting down.

    This option has three possible values:

    • always: Always call Appsignal.stop when the program exits. On (Docker) containers it's automatically set to this value.
    • never: Never call Appsignal.stop when the program exits. The default value when the program doesn't run on a (Docker) container.
    • on_error: Call Appsignal.stop when the program exits with an error.

Deprecated

  • Deprecate the Appsignal.monitor_and_stop helper.

    We instead recommend using the Appsignal.monitor helper and configuring the enable_at_exit_hook config option to always.

View the Ruby gem v4.5.8 changelog for more information.

Mar 20, 2025

Support more logger methods and small changes

Ruby4.5.6

Added

  • Add the Logger << method. This improves our compatibility with Ruby's Logger class implementation, making it usable in more scenarios.

Changed

  • Explicitly return nil from public methods with no usable return value. We want to avoid the situation where Appsignal.start happens to return true and it is thought to mean that the gem started successfully.

    Methods updated:

    • Appsignal.start
    • Appsignal.stop
    • Appsignal.configure
    • Appsignal.forked
    • Appsignal.load
  • Differentiate between process_request.rack events. Add the callback that triggered the event in the event title for debugging purposes.

  • Improve the log message for the uneven timestack error. This will help the AppSignal team debug issues where events get closed when all events are already closed.

View the Ruby gem v4.5.6 changelog for more information.

Mar 20, 2025

Add method to raise error if AppSignal is not started

Ruby4.5.7

Added

  • Add the Appsignal.config_error and Appsignal.config_error? methods. This method contains any error that may have occurred while loading the config/appsignal.rb file. If it is nil no error occurred or Appsignal.start hasn't been called yet. The Appsignal.config_error? method is an alias for syntax sugar.

  • Add the check_if_started! method. This method will raise an error if the AppSignal Ruby gem failed to start.

    Call this method in your CI or on app boot if you wish to verify that AppSignal has started when your application does, and want the application to fail to start if AppSignal hasn't started.

    For example, in this Rails initializer:

    Ruby
    # config/initializers/appsignal.rb Appsignal.check_if_started!

View the Ruby gem v4.5.7 changelog for more information.

Mar 11, 2025

Delay agent reboots

Ruby4.5.4

Changed

  • Delay and eventually halt agent reboots by the extension.

    The AppSignal extension is responsible for booting the AppSignal agent. If communication with the agent is lost, the extension is responsible for rebooting it.

    In certain scenarios, such as when several processes with different AppSignal configurations are misconfigured to share the same working directory, the processes' extensions can enter a loop of rebooting and killing each others' agents. These short-lived agents may then attempt to repeatedly send pending payloads to AppSignal in quick succession.

    This change causes the extension to delay each reboot of its agent by one additional second, and to no longer attempt to reboot the agent after the tenth reboot, slowing down and eventually breaking this loop.

View the Ruby gem v4.5.4 changelog for more information.

Mar 06, 2025

Improve Sidekiq 8 support

Ruby4.5.3

Changed

  • Specify stricter Rack version requirement. The Ruby gem relies on the Rack::Events constant which was introduced in Rack 2. Update our version requirement to require Rack 2 or newer.

Fixed

  • Fix the queue time reporting for Sidekiq 8 jobs. It would report high negative values for the queue time with Sidekiq 8.

View the Ruby gem v4.5.3 changelog for more information.

Feb 24, 2025

Load appsignal.rb config for Capistrano tasks

Ruby4.5.2

Fixed

  • Validate application environment sources so nil values and empty strings are not valid app environments. Symbols are now always cast to a String before set as the application environment.

    Ruby
    # These will no longer be accepted as valid app environments Appsignal.configure("") Appsignal.configure(" ")
  • Fix Capistrano version 2 and 3 support when using an appsignal.rb config file. It will now pick up the config from appsignal.rb file.

View the Ruby gem v4.5.2 changelog for more information.

Feb 21, 2025

Report custom markers directly from the Ruby gem

Ruby4.5.0

Added

  • Add a helper to create custom markers from the Ruby gem.

    Create a custom marker (a little icon shown in the graph timeline on AppSignal.com) to mark events on the timeline.

    Create a marker with all the available options:

    Ruby
    Appsignal::CustomMarker.report( # The icon shown on the timeline :icon => "🎉", # The message shown on hover :message => "Migration completed", # Any time object or a string with a ISO8601 valid time is accepted :created_at => Time.now )

    Create a marker with just a message:

    Ruby
    Appsignal::CustomMarker.report( :message => "Migration completed", )

    The default icon is the 🚀 icon. The default time is the time the request is received by our servers.

Removed

  • Remove the OpenTelemetry beta feature in favor of the new AppSignal collector. If you are using the AppSignal agent to send OpenTelemetry data in our public beta through the /enriched endpoint on the agent's HTTP server, please migrate to the collector to continue using the beta. The collector has a much better implementation of this feature for the beta.

View the Ruby gem v4.5.0 changelog for more information.

Feb 06, 2025

Deduplicate error from error causes

Ruby4.4.0

Changed

  • Do not report error causes if the wrapper error has already been reported. This deduplicates errors and prevents the error wrapper and error cause to be reported separately, as long as the error wrapper is reported first.

    Ruby
    error_wrapper = nil error_cause = nil begin begin raise StandardError, "error cause" rescue => e error_cause = e raise Exception, "error wrapper" end rescue Exception => e error_wrapper = e end Appsignal.report_error(error_wrapper) # Reports error Appsignal.report_error(error_cause) # Doesn't report error

Fixed

  • Fix an issue where the HTTP.rb gem integration would raise an error when a string containing non-ASCII characters is passed to the gem as the URL.

View the Ruby gem v4.4.0 changelog for more information.

Start your free trial

Don’t let the bad bugs bite. Try AppSignal for free.

AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!