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 = { raise: ->(message, callstack, deprecator) do e = DeprecationException.new(message) e.set_backtrace(callstack.map(&:to_s)) 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" ActiveSupport::Logger.new($stderr) end logger.warn message logger.debug callstack.join("\n ") if deprecator.debug end, notify: ->(message, callstack, deprecator) do ActiveSupport::Notifications.instrument( "deprecation.#{deprecator.gem_name.underscore.tr("/", "_")}", 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 = DeprecationException.new(message) error.set_backtrace(callstack.map(&:to_s)) ActiveSupport.error_reporter.report(error) end }
Attributes
[RW] | deprecation_horizon |
The version number in which the deprecated behavior will be removed, by default. |