модуль ActiveSupport::Deprecation::Reporting
Атрибуты
Имя гема, в котором метод объявлен устаревшим
Печатать ли сообщение (тихий режим)
Общедоступные методы экземпляра
# 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 Разрешает предупреждения об устаревании, которые ранее были запрещены, внутри блока. 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 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 # File activesupport/lib/active_support/deprecation/reporting.rb, line 41 def silence(&block) begin_silence block.call ensure end_silence end
Подавляет предупреждения об устаревании внутри блока.
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 56 def silenced @silenced || @silence_counter.value.nonzero? end
# 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 Выводит предупреждение об устаревании, используя способ вывода, настроенный в ActiveSupport::Deprecation#behavior.
ActiveSupport::Deprecation.new.warn('something broke!')
# => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.