Class: ActiveSupport::Deprecation
- Includes:
- Behavior, Disallowed, MethodWrapper, Reporting
- Defined in:
- lib/active_support/deprecation.rb,
lib/active_support/deprecation/behaviors.rb,
lib/active_support/deprecation/reporting.rb,
lib/active_support/deprecation/disallowed.rb,
lib/active_support/deprecation/deprecators.rb,
lib/active_support/deprecation/proxy_wrappers.rb,
lib/active_support/deprecation/method_wrappers.rb,
lib/active_support/deprecation/constant_accessor.rb
Overview
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
Defined Under Namespace
Modules: Behavior, DeprecatedConstantAccessor, Disallowed, MethodWrapper, Reporting Classes: DeprecatedConstantProxy, DeprecatedInstanceVariableProxy, DeprecatedObjectProxy, DeprecationProxy, Deprecators
Constant Summary collapse
- DEFAULT_BEHAVIORS =
Default warning behaviors per Rails.env.
{ raise: ->(, callstack, deprecator) do e = DeprecationException.new() e.set_backtrace(callstack.map(&:to_s)) raise e end, stderr: ->(, callstack, deprecator) do $stderr.puts() $stderr.puts callstack.join("\n ") if deprecator.debug end, log: ->(, callstack, deprecator) do logger = if defined?(Rails.logger) && Rails.logger Rails.logger else require "active_support/logger" ActiveSupport::Logger.new($stderr) end logger.warn logger.debug callstack.join("\n ") if deprecator.debug end, notify: ->(, callstack, deprecator) do ActiveSupport::Notifications.instrument( "deprecation.#{deprecator.gem_name.underscore.tr("/", "_")}", message: , callstack: callstack, gem_name: deprecator.gem_name, deprecation_horizon: deprecator.deprecation_horizon, ) end, silence: ->(, callstack, deprecator) { }, report: ->(, callstack, deprecator) do error = DeprecationException.new() error.set_backtrace(callstack.map(&:to_s)) ActiveSupport.error_reporter.report(error) end }
Instance Attribute Summary collapse
-
#deprecation_horizon ⇒ Object
The version number in which the deprecated behavior will be removed, by default.
Attributes included from Disallowed
Attributes included from Reporting
Attributes included from Behavior
Class Method Summary collapse
-
._instance ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#initialize(deprecation_horizon = "8.0", gem_name = "Rails") ⇒ Deprecation
constructor
It accepts two parameters on initialization.
Methods included from MethodWrapper
Methods included from Reporting
#allow, #begin_silence, #deprecation_warning, #end_silence, #silence, #warn
Methods included from Behavior
#behavior, #behavior=, #disallowed_behavior, #disallowed_behavior=
Constructor Details
#initialize(deprecation_horizon = "8.0", gem_name = "Rails") ⇒ Deprecation
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')
71 72 73 74 75 76 77 78 79 |
# File 'lib/active_support/deprecation.rb', line 71 def initialize(deprecation_horizon = "8.0", 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 |
Instance Attribute Details
#deprecation_horizon ⇒ Object
The version number in which the deprecated behavior will be removed, by default.
65 66 67 |
# File 'lib/active_support/deprecation.rb', line 65 def deprecation_horizon @deprecation_horizon end |
Class Method Details
._instance ⇒ Object
:nodoc:
60 61 62 |
# File 'lib/active_support/deprecation.rb', line 60 def self._instance # :nodoc: @_instance ||= MUTEX.synchronize { @_instance ||= new } end |