Module: ActiveSupport::Deprecation::Reporting
- Included in:
- ActiveSupport::Deprecation
- Defined in:
- activesupport/lib/active_support/deprecation/reporting.rb
Instance Attribute Summary collapse
-
#gem_name ⇒ Object
Name of gem where method is deprecated.
- #silenced ⇒ Object
Instance Method Summary collapse
-
#allow(allowed_warnings = :all, if: true, &block) ⇒ Object
Allow previously disallowed deprecation warnings within the block.
-
#begin_silence ⇒ Object
:nodoc:.
- #deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) ⇒ Object
-
#end_silence ⇒ Object
:nodoc:.
-
#silence(&block) ⇒ Object
Silence deprecation warnings within the block.
-
#warn(message = nil, callstack = nil) ⇒ Object
Outputs a deprecation warning to the output configured by
ActiveSupport::Deprecation#behavior
.
Instance Attribute Details
#gem_name ⇒ Object
Name of gem where method is deprecated
11 12 13 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 11 def gem_name @gem_name end |
#silenced ⇒ Object
55 56 57 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 55 def silenced @silenced || @silence_counter.value.nonzero? end |
Instance Method Details
#allow(allowed_warnings = :all, if: true, &block) ⇒ Object
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.
deprecator = ActiveSupport::Deprecation.new
deprecator.disallowed_behavior = :raise
deprecator.disallowed_warnings = [
"something broke"
]
deprecator.warn('something broke!')
# => ActiveSupport::DeprecationException
deprecator.allow ['something broke'] do
deprecator.warn('something broke!')
end
# => nil
deprecator.allow ['something broke'], if: Rails.env.production? do
deprecator.warn('something broke!')
end
# => ActiveSupport::DeprecationException for dev/test, nil for production
88 89 90 91 92 93 94 95 96 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 88 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 |
#begin_silence ⇒ Object
:nodoc:
47 48 49 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 47 def begin_silence # :nodoc: @silence_counter.value += 1 end |
#deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil) ⇒ Object
98 99 100 101 102 103 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 98 def deprecation_warning(deprecated_method_name, = nil, caller_backtrace = nil) caller_backtrace ||= caller_locations(2) deprecated_method_warning(deprecated_method_name, ).tap do |msg| warn(msg, caller_backtrace) end end |
#end_silence ⇒ Object
:nodoc:
51 52 53 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 51 def end_silence # :nodoc: @silence_counter.value -= 1 end |
#silence(&block) ⇒ Object
Silence deprecation warnings within the block.
deprecator = ActiveSupport::Deprecation.new
deprecator.warn('something broke!')
# => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
deprecator.silence do
deprecator.warn('something broke!')
end
# => nil
40 41 42 43 44 45 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 40 def silence(&block) begin_silence block.call ensure end_silence end |
#warn(message = nil, callstack = nil) ⇒ Object
Outputs a deprecation warning to the output configured by ActiveSupport::Deprecation#behavior
.
ActiveSupport::Deprecation.new.warn('something broke!')
# => "DEPRECATION WARNING: something broke! (called from your_code.rb:1)"
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'activesupport/lib/active_support/deprecation/reporting.rb', line 17 def warn( = nil, callstack = nil) return if silenced callstack ||= caller_locations(2) (callstack, ).tap do || if deprecation_disallowed?() disallowed_behavior.each { |b| b.call(, callstack, self) } else behavior.each { |b| b.call(, callstack, self) } end end end |