Sha256: 2635b5e8e0eb1b23b636dafc0cda32002cc9fb3edcf9b1d160d2207f1c56ce8f

Contents?: true

Size: 1.92 KB

Versions: 40

Compression:

Stored size: 1.92 KB

Contents

module ActiveSupport
  module Deprecation
    class << self
      attr_accessor :silenced

      def warn(message = nil, callstack = caller)
        return if silenced
        deprecation_message(callstack, message).tap do |m|
          behavior.each { |b| b.call(m, callstack) }
        end
      end

      # Silence deprecation warnings within the block.
      def silence
        old_silenced, @silenced = @silenced, true
        yield
      ensure
        @silenced = old_silenced
      end

      def deprecated_method_warning(method_name, message = nil)
        warning = "#{method_name} is deprecated and will be removed from Rails #{deprecation_horizon}"
        case message
          when Symbol then "#{warning} (use #{message} instead)"
          when String then "#{warning} (#{message})"
          else warning
        end
      end

      private
        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

        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

        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
    end
  end
end

Version data entries

40 entries across 40 versions & 3 rubygems

Version Path
social_url_stats-0.0.1 vendor/ruby/1.9.1/gems/activesupport-3.0.0/lib/active_support/deprecation/reporting.rb
activesupport-3.0.20 lib/active_support/deprecation/reporting.rb
activesupport-3.0.19 lib/active_support/deprecation/reporting.rb
activesupport-3.0.18 lib/active_support/deprecation/reporting.rb
activesupport-3.0.17 lib/active_support/deprecation/reporting.rb
activesupport-3.0.16 lib/active_support/deprecation/reporting.rb
activesupport-3.0.15 lib/active_support/deprecation/reporting.rb
activesupport-3.0.14 lib/active_support/deprecation/reporting.rb
activesupport-3.0.13 lib/active_support/deprecation/reporting.rb
activesupport-3.0.13.rc1 lib/active_support/deprecation/reporting.rb
activesupport-3.0.12 lib/active_support/deprecation/reporting.rb
activesupport-3.0.12.rc1 lib/active_support/deprecation/reporting.rb
activesupport-3.0.11 lib/active_support/deprecation/reporting.rb
messagebus_ruby_api-0.4.7 spec/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/deprecation/reporting.rb
messagebus_ruby_api-0.4.4 spec/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/deprecation/reporting.rb
activesupport-3.0.10 lib/active_support/deprecation/reporting.rb
activesupport-3.0.10.rc1 lib/active_support/deprecation/reporting.rb
activesupport-3.0.9 lib/active_support/deprecation/reporting.rb
activesupport-3.0.9.rc5 lib/active_support/deprecation/reporting.rb
activesupport-3.0.9.rc4 lib/active_support/deprecation/reporting.rb