Skip to Content Skip to Search

Active Support Deprecation

Deprecation specifies the API used by Rails to deprecate methods, instance variables, objects, and constants. It’s also available for gems or applications.

For a gem, use to create a Deprecation object and store it in your module or class (in order for users to be able to configure it).

module MyLibrary
  def self.deprecator
    @deprecator ||="2.0", "MyLibrary")

For a Railtie or Engine, you may also want to add it to the application’s deprecators, so that the application’s configuration can be applied to it.

module MyLibrary
  class Railtie < Rails::Railtie
    initializer "my_library.deprecator" do |app|
      app.deprecators[:my_library] = MyLibrary.deprecator

With the above initializer, configuration settings like the following will affect MyLibrary.deprecator:

# in config/environments/test.rb
config.active_support.deprecation = :raise
Included Modules


DEFAULT_BEHAVIORS = { raise: ->(message, callstack, deprecator) do e = e.set_backtrace( raise e end, stderr: ->(message, callstack, deprecator) do $stderr.puts(message) $stderr.puts callstack.join("\n ") if deprecator.debug end, log: ->(message, callstack, deprecator) do logger = if defined?(Rails.logger) && Rails.logger Rails.logger else require "active_support/logger"$stderr) end logger.warn message logger.debug callstack.join("\n ") if deprecator.debug end, notify: ->(message, callstack, deprecator) do ActiveSupport::Notifications.instrument( "deprecation.#{"/", "_")}", message: message, callstack: callstack, gem_name: deprecator.gem_name, deprecation_horizon: deprecator.deprecation_horizon, ) end, silence: ->(message, callstack, deprecator) { }, report: ->(message, callstack, deprecator) do error = error.set_backtrace( end }

Default warning behaviors per Rails.env.


[RW] deprecation_horizon

The version number in which the deprecated behavior will be removed, by default.

Class Public methods

new(deprecation_horizon = "7.2", gem_name = "Rails")

It accepts two parameters on initialization. The first is a version of library and the second is a library name.'2.0', 'MyLibrary')
# File activesupport/lib/active_support/deprecation.rb, line 68
def initialize(deprecation_horizon = "7.2", gem_name = "Rails")
  self.gem_name = gem_name
  self.deprecation_horizon = deprecation_horizon
  # By default, warnings are not silenced and debugging is off.
  self.silenced = false
  self.debug = false
  @silence_counter =
  @explicitly_allowed_warnings =