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.