Methods

Constants

RAILS_GEM_ROOT = File.expand_path("../../../..", __dir__) + "/"

Attributes

[RW] gem_name

Name of gem where method is deprecated

[W] silenced

Whether to print a message (silent mode)

Instance Public methods

allow(allowed_warnings = :all, if: true, &block)

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
📝 Source code
# 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
🔎 See on GitHub

deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil)

📝 Source code
# 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
🔎 See on GitHub

silence(&block)

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
📝 Source code
# File activesupport/lib/active_support/deprecation/reporting.rb, line 40
      def silence(&block)
        @silenced_thread.bind(true, &block)
      end
🔎 See on GitHub

silenced()

📝 Source code
# File activesupport/lib/active_support/deprecation/reporting.rb, line 82
      def silenced
        @silenced || @silenced_thread.value
      end
🔎 See on GitHub

warn(message = nil, callstack = nil)

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)"
📝 Source code
# 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
🔎 See on GitHub