Module: Uncruft::Warning

Defined in:
lib/uncruft/warning.rb

Constant Summary collapse

DEPRECATION_PATTERN =
/(deprecation|deprecated)/i
EXPECTED_INTERNAL_FRAMES =

Version-pinned: which internal frames are allowed at clocs. Empty array = no internal frames expected. Missing key = unknown combo.

{
  ["3.2", "7.2"] => [],
  ["3.2", "8.0"] => [],
  ["3.3", "7.2"] => [],
  ["3.3", "8.0"] => [],
  ["3.4", "7.2"] => [],
  ["3.4", "8.0"] => ['prism/polyfill/warn.rb'],
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.expected_internal_framesObject



18
19
20
21
22
# File 'lib/uncruft/warning.rb', line 18

def self.expected_internal_frames
  ruby_minor = RUBY_VERSION.split('.')[0..1].join('.')
  rails_minor = Rails::VERSION::STRING.split('.')[0..1].join('.')
  EXPECTED_INTERNAL_FRAMES[[ruby_minor, rails_minor]]
end

Instance Method Details

#warn(*args, **kwargs) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/uncruft/warning.rb', line 24

def warn(*args, **kwargs)
  str = args[0]

  if str =~ DEPRECATION_PATTERN # rubocop:disable Performance/RegexpMatch
    cloc = find_caller_location(caller_locations(1..5))
    message = strip_caller_info(str, cloc).strip
    Uncruft.deprecator.warn(message)
  else
    super
  end
end