Module: ActiveSupport::Deprecation::Behavior

Included in:
ActiveSupport::Deprecation
Defined in:
activesupport/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

#debugObject

Whether to print a backtrace along with the warning.



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

def debug
  @debug
end

Instance Method Details

#behaviorObject

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



74
75
76
# File 'activesupport/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.



111
112
113
# File 'activesupport/lib/active_support/deprecation/behaviors.rb', line 111

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

#disallowed_behaviorObject

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



79
80
81
# File 'activesupport/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.



119
120
121
# File 'activesupport/lib/active_support/deprecation/behaviors.rb', line 119

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