aboutsummaryrefslogblamecommitdiffstats
path: root/activesupport/lib/active_support/deprecation.rb
blob: e6550fdcd0938d61da87a82eb276376306ddba3c (plain) (tree)
1
2
3
4
5
6
7
8
                             
 
                   
 
                    

                                                                               
                   







                                                                              






                                                     
 





                             
                                                                                      
                                      
 
                                                                                    
                                       
     
                                                          
                                                                   





                                                                   
     
   
# frozen_string_literal: true

require "singleton"

module ActiveSupport
  # \Deprecation specifies the API used by Rails to deprecate methods, instance
  # variables, objects and constants.
  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
    # ActiveSupport::Deprecation its autoload would be triggered, resulting in
    # a circular require warning for active_support/deprecation.rb.
    #
    # So, we define the constant first, and load dependencies later.
    require_relative "deprecation/instance_delegator"
    require_relative "deprecation/behaviors"
    require_relative "deprecation/reporting"
    require_relative "deprecation/constant_accessor"
    require_relative "deprecation/method_wrappers"
    require_relative "deprecation/proxy_wrappers"
    require_relative "core_ext/module/deprecation"

    include Singleton
    include InstanceDelegator
    include Behavior
    include Reporting
    include MethodWrapper

    # The version number in which the deprecated behavior will be removed, by default.
    attr_accessor :deprecation_horizon

    # 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 = "6.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
    end
  end
end