Class: ActiveSupport::Deprecation

Inherits:
Object
  • Object
show all
Includes:
Behavior, InstanceDelegator, MethodWrapper, Reporting, Singleton
Defined in:
activesupport/lib/active_support/deprecation.rb,
activesupport/lib/active_support/deprecation/behaviors.rb,
activesupport/lib/active_support/deprecation/reporting.rb,
activesupport/lib/active_support/deprecation/proxy_wrappers.rb,
activesupport/lib/active_support/deprecation/method_wrappers.rb,
activesupport/lib/active_support/deprecation/constant_accessor.rb,
activesupport/lib/active_support/deprecation/instance_delegator.rb

Overview

Deprecation specifies the API used by Rails to deprecate methods, instance variables, objects and constants.

Defined Under Namespace

Modules: Behavior, DeprecatedConstantAccessor, InstanceDelegator, MethodWrapper, Reporting Classes: DeprecatedConstantProxy, DeprecatedInstanceVariableProxy, DeprecatedObjectProxy, DeprecationProxy

Constant Summary collapse

DEFAULT_BEHAVIORS =

Default warning behaviors per Rails.env.

{
  raise: ->(message, callstack, deprecation_horizon, gem_name) {
    e = DeprecationException.new(message)
    e.set_backtrace(callstack.map(&:to_s))
    raise e
  },

  stderr: ->(message, callstack, deprecation_horizon, gem_name) {
    $stderr.puts(message)
    $stderr.puts callstack.join("\n  ") if debug
  },

  log: ->(message, callstack, deprecation_horizon, gem_name) {
    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 debug
  },

  notify: ->(message, callstack, deprecation_horizon, gem_name) {
    notification_name = "deprecation.#{gem_name.underscore.tr('/', '_')}"
    ActiveSupport::Notifications.instrument(notification_name,
                                            message: message,
                                            callstack: callstack,
                                            gem_name: gem_name,
                                            deprecation_horizon: deprecation_horizon)
  },

  silence: ->(message, callstack, deprecation_horizon, gem_name) { },
}

Instance Attribute Summary collapse

Attributes included from Reporting

#gem_name, #silenced

Attributes included from Behavior

#debug

Instance Method Summary collapse

Methods included from MethodWrapper

#deprecate_methods

Methods included from Reporting

#deprecation_warning, #silence, #warn

Methods included from Behavior

#behavior, #behavior=

Methods included from InstanceDelegator

included

Constructor Details

#initialize(deprecation_horizon = "6.2", 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')


39
40
41
42
43
44
45
46
# File 'activesupport/lib/active_support/deprecation.rb', line 39

def initialize(deprecation_horizon = "6.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)
end

Instance Attribute Details

#deprecation_horizonObject

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



33
34
35
# File 'activesupport/lib/active_support/deprecation.rb', line 33

def deprecation_horizon
  @deprecation_horizon
end