aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/name_error.rb
blob: e1ebd4f91c3f08732a2078ccc2d5e504a286e30a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class NameError
  # Extract the name of the missing constant from the exception message.
  def missing_name
    if /undefined local variable or method/ !~ message
      $1 if /((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/ =~ message
    end
  end

  # Was this exception raised because the given name was missing?
  def missing_name?(name)
    if name.is_a? Symbol
      last_name = (missing_name || '').split('::').last
      last_name == name.to_s
    else
      missing_name == name.to_s
    end
  end
end