module ActiveSupport::Deprecation::Reporting
Constants
- RAILS_GEM_ROOT
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 43 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() { || ... }
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 36 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 18 def warn(message = nil, callstack = nil) return if silenced callstack ||= caller_locations(2) deprecation_message(callstack, message).tap do |m| behavior.each { |b| b.call(m, callstack, deprecation_horizon, gem_name) } end end
Private Instance Methods
_extract_callstack(callstack)
click to toggle source
# File lib/active_support/deprecation/reporting.rb, line 94 def _extract_callstack(callstack) warn "Please pass `caller_locations` to the deprecation API" if $VERBOSE offending_line = callstack.find { |line| !ignored_callstack(line) } || callstack.first if offending_line if md = offending_line.match(/^(.+?):(\d+)(?::in `(.*?)')?/) md.captures else offending_line end end end
deprecated_method_warning(method_name, message = nil)
click to toggle source
Outputs a deprecation warning message
deprecated_method_warning(:method_name) # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon}" deprecated_method_warning(:method_name, :another_method) # => "method_name is deprecated and will be removed from Rails #{deprecation_horizon} (use another_method instead)" 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 59 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 73 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 68 def deprecation_message(callstack, message = nil) message ||= "You are using deprecated behavior which will be removed from the next major or minor release." "DEPRECATION WARNING: #{message} #{deprecation_caller_message(callstack)}" end
extract_callstack(callstack)
click to toggle source
# File lib/active_support/deprecation/reporting.rb, line 84 def extract_callstack(callstack) return _extract_callstack(callstack) if callstack.first.is_a? String offending_line = callstack.find { |frame| frame.absolute_path && !ignored_callstack(frame.absolute_path) } || callstack.first [offending_line.path, offending_line.lineno, offending_line.label] end
ignored_callstack(path)
click to toggle source
# File lib/active_support/deprecation/reporting.rb, line 109 def ignored_callstack(path) path.start_with?(RAILS_GEM_ROOT) || path.start_with?(RbConfig::CONFIG["rubylibdir"]) end