module ActiveSupport::Deprecation::Behavior
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:stderr-
Log all deprecation warnings to
$stderr. :log-
Log all deprecation warnings to
Rails.logger. :notify-
Use
ActiveSupport::Notificationsto notifydeprecation.rails. :report-
Use
ActiveSupport::ErrorReporterto report deprecations. :silence-
Do nothing. On Rails, set
config.active_support.report_deprecations = falseto 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.
Attributes
Whether to print a backtrace along with the warning.
Public Instance Methods
Source
# File lib/active_support/deprecation/behaviors.rb, line 74 def behavior @behavior ||= [DEFAULT_BEHAVIORS[:stderr]] end
Returns the current behavior or if one isnโt set, defaults to :stderr.
Source
# File lib/active_support/deprecation/behaviors.rb, line 111 def behavior=(behavior) @behavior = Array(behavior).map { |b| DEFAULT_BEHAVIORS[b] || arity_coerce(b) } end
Sets the behavior to the specified value. Can be a single value, array, or an object that responds to call.
Available behaviors:
:raise:stderr-
Log all deprecation warnings to
$stderr. :log-
Log all deprecation warnings to
Rails.logger. :notify-
Use
ActiveSupport::Notificationsto notifydeprecation.rails. :report-
Use
ActiveSupport::ErrorReporterto 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.
Source
# File lib/active_support/deprecation/behaviors.rb, line 79 def disallowed_behavior @disallowed_behavior ||= [DEFAULT_BEHAVIORS[:raise]] end
Returns the current behavior for disallowed deprecations or if one isnโt set, defaults to :raise.
Source
# File 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
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.
Private Instance Methods
Source
# File lib/active_support/deprecation/behaviors.rb, line 124 def arity_coerce(behavior) unless behavior.respond_to?(:call) raise ArgumentError, "#{behavior.inspect} is not a valid deprecation behavior." end case arity_of_callable(behavior) when 2 ->(message, callstack, deprecator) do behavior.call(message, callstack) end when -2..3 behavior else ->(message, callstack, deprecator) do behavior.call(message, callstack, deprecator.deprecation_horizon, deprecator.gem_name) end end end
Source
# File lib/active_support/deprecation/behaviors.rb, line 143 def arity_of_callable(callable) callable.respond_to?(:arity) ? callable.arity : callable.method(:call).arity end