跳到內容 跳到搜尋
方法
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
# 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)

# 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
# File activesupport/lib/active_support/deprecation/reporting.rb, line 41
def silence(&block)
  begin_silence
  block.call
ensure
  end_silence
end

silenced()

# 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)"
# 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