lib/active_support/deprecation.rb in activesupport-7.0.8.6 vs lib/active_support/deprecation.rb in activesupport-7.1.0.beta1

- old
+ new

@@ -1,12 +1,39 @@ # frozen_string_literal: true require "singleton" module ActiveSupport - # \Deprecation specifies the API used by Rails to deprecate methods, instance - # variables, objects, and constants. + # = 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 class Deprecation # active_support.rb sets an autoload for ActiveSupport::Deprecation. # # If these requires were at the top of the file the constant would not be # defined by the time their files were loaded. Since some of them reopen @@ -19,14 +46,14 @@ require "active_support/deprecation/reporting" require "active_support/deprecation/disallowed" require "active_support/deprecation/constant_accessor" require "active_support/deprecation/method_wrappers" require "active_support/deprecation/proxy_wrappers" + require "active_support/deprecation/deprecators" require "active_support/core_ext/module/deprecation" require "concurrent/atomic/thread_local_var" - include Singleton include InstanceDelegator include Behavior include Reporting include Disallowed include MethodWrapper @@ -36,16 +63,16 @@ # 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') - def initialize(deprecation_horizon = "7.1", gem_name = "Rails") + 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 - @silenced_thread = Concurrent::ThreadLocalVar.new(false) + @silence_counter = Concurrent::ThreadLocalVar.new(0) @explicitly_allowed_warnings = Concurrent::ThreadLocalVar.new(nil) end end end