module ActiveSupport::Deprecation::Reporting - activesupport-4.2.4 Documentation

# module ActiveSupport::Deprecation::Reporting

### Attributes

gem_name[RW]

Name of gem where method is deprecated

silenced[RW]

Whether to print a message (silent mode)

### Public Instance Methods

deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) click to toggle source

    # File lib/active_support/deprecation/reporting.rb, line 39
    def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil)
      caller_backtrace ||= caller(2)
      deprecated_method_warning(deprecated_method_name, message).tap do |msg|
        warn(msg, caller_backtrace)
      end
    end

silence() { || ... } click to toggle source

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 lib/active_support/deprecation/reporting.rb, line 32
    def silence
      old_silenced, @silenced = @silenced, true
      yield
    ensure
      @silenced = old_silenced
    end

warn(message = nil, callstack = nil) click to toggle source

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

    # File lib/active_support/deprecation/reporting.rb, line 14
    def warn(message = nil, callstack = nil)
      return if silenced

      callstack ||= caller(2)
      deprecation_message(callstack, message).tap do |m|
        behavior.each { |b| b.call(m, callstack) }
      end
    end

### Private Instance Methods

deprecated_method_warning(method_name, message = nil) click to toggle source

Outputs a deprecation warning message

    ActiveSupport::Deprecation.deprecated_method_warning(:method_name)
    # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon}"
    ActiveSupport::Deprecation.deprecated_method_warning(:method_name, :another_method)
    # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon} (use another_method instead)"
    ActiveSupport::Deprecation.deprecated_method_warning(:method_name, "Optional message")
    # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon} (Optional message)"

    # File lib/active_support/deprecation/reporting.rb, line 55
    def deprecated_method_warning(method_name, message = nil)
      warning = "#{method_name} is deprecated and will be removed from #{gem_name} #{deprecation_horizon}"
      case message
        when Symbol then "#{warning} (use #{message} instead)"
        when String then "#{warning} (#{message})"
        else warning
      end
    end

deprecation_caller_message(callstack) click to toggle source

    # File lib/active_support/deprecation/reporting.rb, line 70
    def deprecation_caller_message(callstack)
      file, line, method = extract_callstack(callstack)
      if file
        if line && method
          "(called from #{method} at #{file}:#{line})"
        else
          "(called from #{file}:#{line})"
        end
      end
    end

deprecation_message(callstack, message = nil) click to toggle source

    # File lib/active_support/deprecation/reporting.rb, line 64
    def deprecation_message(callstack, message = nil)
      message ||= "You are using deprecated behavior which will be removed from the next major or minor release."
      message += '.' unless message =~ /\.$/
      "DEPRECATION WARNING: #{message} #{deprecation_caller_message(callstack)}"
    end

extract_callstack(callstack) click to toggle source

    # File lib/active_support/deprecation/reporting.rb, line 81
    def extract_callstack(callstack)
      rails_gem_root = File.expand_path("../../../../..", __FILE__) + "/"
      offending_line = callstack.find { |line| !line.start_with?(rails_gem_root) } || callstack.first
      if offending_line
        if md = offending_line.match(/^(.+?):(\d+)(?::in `(.*?)')?/)
          md.captures
        else
          offending_line
        end
      end
    end