class ActiveSupport::Deprecation

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 Deprecation.new 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 ||= ActiveSupport::Deprecation.new("2.0", "MyLibrary")
  end
end

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
    end
  end
end

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

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

Constants

DEFAULT_BEHAVIORS

Default warning behaviors per Rails.env.

Attributes

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

Public Class Methods

It accepts two parameters on initialization. The first is a version of library and the second is a library name.

ActiveSupport::Deprecation.new('2.0', 'MyLibrary')
# File activesupport/lib/active_support/deprecation.rb, line 71
def initialize(deprecation_horizon = "8.1", 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 = Concurrent::ThreadLocalVar.new(0)
  @explicitly_allowed_warnings = Concurrent::ThreadLocalVar.new(nil)
end