Skip to Content Skip to Search
class ActiveSupport::Deprecation < Object

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.

Public class 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')
Source code GitHub
# 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 =
Definition files
5 More Less