方法
- A
- D
- S
- W
常數
LIB_DIR | = | RbConfig::CONFIG["libdir"] |
RAILS_GEM_ROOT | = | File.expand_path("../../../..", __dir__) + "/" |
屬性
[RW] | gem_name | 方法已棄用的套件名稱 |
[W] | silenced | 是否要列印訊息(靜音模式) |
執行個體公開方法
allow(allowed_warnings = :all, if: true, &block) 連結
在區塊中允許先前不允許的棄用警告。allowed_warnings
可以是包含字串、符號或正規表示式的陣列。(符號視為字串)。這些會與區塊中產生的棄用警告訊息文字進行比對。符合的警告將會豁免 ActiveSupport::Deprecation#disallowed_warnings
所設定的規則。
可選的 if:
參數接受真值/假值或會回應 .call
的物件。如果為真值,則會允許符合的警告。如果為假值,則方法會讓出區塊而不會允許警告。
deprecator = ActiveSupport::Deprecation.new
deprecator.disallowed_behavior = :raise
deprecator.disallowed_warnings = [
"something broke"
]
deprecator.warn('something broke!')
# => ActiveSupport::DeprecationException
deprecator.allow ['something broke'] do
deprecator.warn('something broke!')
end
# => nil
deprecator.allow ['something broke'], if: Rails.env.production? do
deprecator.warn('something broke!')
end
# => ActiveSupport::DeprecationException for dev/test, nil for production
來源: 顯示 | 在 GitHub 上
# File activesupport/lib/active_support/deprecation/reporting.rb, line 89 def allow(allowed_warnings = :all, if: true, &block) conditional = binding.local_variable_get(:if) conditional = conditional.call if conditional.respond_to?(:call) if conditional @explicitly_allowed_warnings.bind(allowed_warnings, &block) else yield end end
deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) 連結
來源: 顯示 | 在 GitHub 上
# File activesupport/lib/active_support/deprecation/reporting.rb, line 99 def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) caller_backtrace ||= caller_locations(2) deprecated_method_warning(deprecated_method_name, message).tap do |msg| warn(msg, caller_backtrace) end end
silence(&block) 連結
在區塊中靜音棄用警告。
deprecator = ActiveSupport::Deprecation.new
deprecator.warn('something broke!')
# => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
deprecator.silence do
deprecator.warn('something broke!')
end
# => nil
來源:顯示 | 在 GitHub 上
# File activesupport/lib/active_support/deprecation/reporting.rb, line 41 def silence(&block) begin_silence block.call ensure end_silence end
silenced() 連結
來源:顯示 | 在 GitHub 上
# File activesupport/lib/active_support/deprecation/reporting.rb, line 56 def silenced @silenced || @silence_counter.value.nonzero? end
warn(message = nil, callstack = nil) 連結
輸出由 ActiveSupport::Deprecation#behavior
所設定的輸出中的一個不建議使用的警告。
ActiveSupport::Deprecation.new.warn('something broke!')
# => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
來源:顯示 | 在 GitHub 上
# File activesupport/lib/active_support/deprecation/reporting.rb, line 18 def warn(message = nil, callstack = nil) return if silenced callstack ||= caller_locations(2) deprecation_message(callstack, message).tap do |full_message| if deprecation_disallowed?(message) disallowed_behavior.each { |b| b.call(full_message, callstack, self) } else behavior.each { |b| b.call(full_message, callstack, self) } end end end