instance method missing_name

Ruby on Rails 7.2.3

Since v3.0.20

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

missing_name()

Extract the name of the missing constant from the exception message.

begin
  HelloWorld
rescue NameError => e
  e.missing_name
end
# => "HelloWorld"
Source
# File activesupport/lib/active_support/core_ext/name_error.rb, line 12
  def missing_name
    # Since ruby v2.3.0 `did_you_mean` gem is loaded by default.
    # It extends NameError#message with spell corrections which are SLOW.
    # We should use original_message message instead.
    message = respond_to?(:original_message) ? original_message : self.message
    return unless message.start_with?("uninitialized constant ")

    receiver = begin
      self.receiver
    rescue ArgumentError
      nil
    end

    if receiver == Object
      name.to_s
    elsif receiver
      "#{real_mod_name(receiver)}::#{self.name}"
    else
      if match = message.match(/((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/)
        match[1]
      end
    end
  end

Defined in activesupport/lib/active_support/core_ext/name_error.rb line 12 · View on GitHub · Improve this page · Find usages on GitHub

Defined in NameError

Type at least 2 characters to search.

↑↓ navigate · open · esc close