Undefinierte Methode in Ruby behoben
Dieser Artikel behandelt die Behebung des häufigsten Fehlers in Ruby-Projekten, der undefinierten Methode.
Undefinierte Methode in Ruby behoben
Die undefinierte Methode wird auch als Ausnahme NoMethodError
bezeichnet und ist laut The 2022 Airbrake Error Data Report der häufigste Fehler in Projekten.
Es tritt auf, wenn ein Empfänger (ein Objekt) eine Methode empfängt, die nicht existiert.
Undefinierte Methode für ein eingebautes Objekt
Der folgende Code zeigt, wie man einen NoMethodError
-Fehler auf einem Array-Objekt auslöst, wenn wir darauf eine undefinierte Methode maximum
aufrufen.
Beispielcode:
arr = [1, 2, 3, 7, 4]
puts arr.maximum
Ausgang:
undefined method `maximum' for [1, 2, 3, 7, 4]:Array (NoMethodError)
Undefinierte Methode für ein benutzerdefiniertes Objekt
Der folgende Code zeigt, wie ein NoMethodError
-Fehler bei einem benutzerdefinierten Objekt ausgelöst wird.
Beispielcode:
class Employee
def initialize(last_name, first_name)
@last_name = last_name
@first_name = first_name
end
def full_name
"#{@first_name} #{@last_name}"
end
end
employee1 = Employee.new('John', 'Doe')
puts employee1.fullname
Ausgang:
undefined method `fullname' for #<Employee:0x0000565026778608> (NoMethodError)
Did you mean? full_name
Im obigen Beispiel haben wir absichtlich fullname
anstelle von full_name
verwendet, und als Ergebnis konnte Ruby keine Übereinstimmung finden, fand aber einen Namen, der sehr ähnlich aussah. Also: Meinten Sie? full_name
wurde zum Fehler-Traceback hinzugefügt.