Name of gem where method is deprecated
Whether to print a message (silent mode)
# File activesupport/lib/active_support/deprecation/reporting.rb, line 72 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
Allow previously disallowed deprecation warnings within the block. allowed_warnings
can be an array containing strings, symbols, or regular expressions. (Symbols are treated as strings). These are compared against the text of deprecation warning messages generated within the block. Matching warnings will be exempt from the rules set by ActiveSupport::Deprecation.disallowed_warnings
The optional if:
argument accepts a truthy/falsy value or an object that responds to .call
. If truthy, then matching warnings will be allowed. If falsey then the method yields to the block without allowing the warning.
ActiveSupport::Deprecation.disallowed_behavior = :raise ActiveSupport::Deprecation.disallowed_warnings = [ "something broke" ] ActiveSupport::Deprecation.warn('something broke!') # => ActiveSupport::DeprecationException ActiveSupport::Deprecation.allow ['something broke'] do ActiveSupport::Deprecation.warn('something broke!') end # => nil ActiveSupport::Deprecation.allow ['something broke'], if: Rails.env.production? do ActiveSupport::Deprecation.warn('something broke!') end # => ActiveSupport::DeprecationException for dev/test, nil for production
# File activesupport/lib/active_support/deprecation/reporting.rb, line 86 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 40 def silence(&block) @silenced_thread.bind(true, &block) end
Silence deprecation warnings within the block.
ActiveSupport::Deprecation.warn('something broke!') # => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)" ActiveSupport::Deprecation.silence do ActiveSupport::Deprecation.warn('something broke!') end # => nil
# File activesupport/lib/active_support/deprecation/reporting.rb, line 82 def silenced @silenced || @silenced_thread.value 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 |m| if deprecation_disallowed?(message) disallowed_behavior.each { |b| b.call(m, callstack, deprecation_horizon, gem_name) } else behavior.each { |b| b.call(m, callstack, deprecation_horizon, gem_name) } end end end
Outputs a deprecation warning to the output configured by ActiveSupport::Deprecation.behavior
.
ActiveSupport::Deprecation.warn('something broke!') # => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.