跳至内容 跳至搜索

Behavior 模块允许确定如何显示弃用消息。您可以创建自定义行为或从 DEFAULT_BEHAVIORS 常量中设置任何行为。可用的行为有

:raise

引发 ActiveSupport::DeprecationException.

:stderr

将所有弃用警告记录到 $stderr

:log

将所有弃用警告记录到 Rails.logger

:notify

使用 ActiveSupport::Notifications 通知 deprecation.rails

:report

使用 ActiveSupport::ErrorReporter 报告弃用。

:silence

什么也不做。在 Rails 中,设置 config.active_support.report_deprecations = false 以禁用所有行为。

设置行为只会影响启动后发生的弃用。有关更多信息,您可以阅读 behavior= 方法的文档。

方法
B
D

属性

[RW] debug

是否在警告中打印回溯。

实例公共方法

behavior()

返回当前行为,如果没有设置,则默认为 :stderr

# File activesupport/lib/active_support/deprecation/behaviors.rb, line 74
def behavior
  @behavior ||= [DEFAULT_BEHAVIORS[:stderr]]
end

behavior=(behavior)

将行为设置为指定的值。可以是单个值、数组或响应 call 的对象。

可用行为

:raise

引发 ActiveSupport::DeprecationException.

:stderr

将所有弃用警告记录到 $stderr

:log

将所有弃用警告记录到 Rails.logger

:notify

使用 ActiveSupport::Notifications 通知 deprecation.rails

:report

使用 ActiveSupport::ErrorReporter 报告弃用。

:silence

什么也不做。

设置行为只会影响启动后发生的弃用。Deprecation 由 gem 引发的警告不受此设置的影响,因为它们发生在 Rails 启动之前。

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

如果您使用的是 Rails,您可以设置 config.active_support.report_deprecations = false 以禁用所有弃用行为。这类似于 :silence 选项,但性能更高。

# 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_behavior()

返回当前不允许弃用行为,如果没有设置,则默认为 :raise

# File activesupport/lib/active_support/deprecation/behaviors.rb, line 79
def disallowed_behavior
  @disallowed_behavior ||= [DEFAULT_BEHAVIORS[:raise]]
end

disallowed_behavior=(behavior)

将不允许的弃用行为(由 ActiveSupport::Deprecation#disallowed_warnings= 配置)设置为指定的值。与 behavior= 一样,这可以是单个值、数组或响应 call 的对象。

# 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