module ActiveSupport::Deprecation::Reporting

Constants

RAILS_GEM_ROOT

Attributes

gem_name[RW]

Name of gem where method is deprecated

silenced[W]

Whether to print a message (silent mode)

Public Instance Methods

allow(allowed_warnings = :all, if: true) { || ... } Show source
# 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
deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) Show source
# 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
silence(&block) Show source
# 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
silenced() Show source
# File activesupport/lib/active_support/deprecation/reporting.rb, line 82
def silenced
  @silenced || @silenced_thread.value
end
warn(message = nil, callstack = nil) Show source
# 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–2020 David Heinemeier Hansson
Licensed under the MIT License.