Module: ActiveSupport::Deprecation::Behavior

Included in:
ActiveSupport::Deprecation
Defined in:
lib/active_support/deprecation/behaviors.rb

Overview

Behavior module allows to determine how to display deprecation messages. You can create a custom behavior or set any from the DEFAULT_BEHAVIORS constant. Available behaviors are:

[+raise+] Raise ActiveSupport::DeprecationException. [+stderr+] Log all deprecation warnings to $stderr. [+log+] Log all deprecation warnings to Rails.logger. [+notify+] Use ActiveSupport::Notifications to notify deprecation.rails. [+report+] Use ActiveSupport::ErrorReporter to report deprecations. [+silence+] Do nothing. On Rails, set config.active_support.report_deprecations = false to disable all behaviors.

Setting behaviors only affects deprecations that happen after boot time. For more information you can read the documentation of the behavior= method.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#debug ⇒ Object

Whether to print a backtrace along with the warning.



71
72
73
# File 'lib/active_support/deprecation/behaviors.rb', line 71

def debug
  @debug
end

Instance Method Details

#behavior ⇒ Object

Returns the current behavior or if one isn't set, defaults to :stderr.



74
75
76
# File 'lib/active_support/deprecation/behaviors.rb', line 74

def behavior
  @behavior ||= [DEFAULT_BEHAVIORS[:stderr]]
end

#behavior=(behavior) ⇒ Object

Sets the behavior to the specified value. Can be a single value, array, or an object that responds to call.

Available behaviors:

[+raise+] Raise ActiveSupport::DeprecationException. [+stderr+] Log all deprecation warnings to $stderr. [+log+] Log all deprecation warnings to Rails.logger. [+notify+] Use ActiveSupport::Notifications to notify deprecation.rails. [+report+] Use ActiveSupport::ErrorReporter to report deprecations. [+silence+] Do nothing.

Setting behaviors only affects deprecations that happen after boot time. Deprecation warnings raised by gems are not affected by this setting because they happen before Rails boots up.

deprecator = ActiveSupport::Deprecation.new
deprecator.behavior = :stderr
deprecator.behavior = [:stderr, :log]
deprecator.behavior = MyCustomHandler
deprecator.behavior = ->(message, callstack, deprecation_horizon, gem_name) {
# custom stuff
}

If you are using Rails, you can set config.active_support.report_deprecations = false to disable all deprecation behaviors. This is similar to the silence option but more performant.



109
110
111
# File 'lib/active_support/deprecation/behaviors.rb', line 109

def behavior=(behavior)
  @behavior = Array(behavior).map { |b| DEFAULT_BEHAVIORS[b] || arity_coerce(b) }
end

#disallowed_behavior ⇒ Object

Returns the current behavior for disallowed deprecations or if one isn't set, defaults to :raise.



79
80
81
# File 'lib/active_support/deprecation/behaviors.rb', line 79

def disallowed_behavior
  @disallowed_behavior ||= [DEFAULT_BEHAVIORS[:raise]]
end

#disallowed_behavior=(behavior) ⇒ Object

Sets the behavior for disallowed deprecations (those configured by ActiveSupport::Deprecation#disallowed_warnings=) to the specified value. As with behavior=, this can be a single value, array, or an object that responds to call.



117
118
119
# File 'lib/active_support/deprecation/behaviors.rb', line 117

def disallowed_behavior=(behavior)
  @disallowed_behavior = Array(behavior).map { |b| DEFAULT_BEHAVIORS[b] || arity_coerce(b) }
end