Ruby で未定義のメソッドを修正
Nurudeen Ibrahim
2023年6月21日
この記事では、Ruby プロジェクトで最も一般的なエラーである未定義メソッドの修正について説明します。
Ruby で未定義のメソッドを修正
未定義のメソッドは NoMethodError
例外とも呼ばれ、The 2022 Airbrake Error Data Report によると、プロジェクト内で最も一般的なエラーです。
レシーバー (オブジェクト) が存在しないメソッドを受け取ったときに発生します。
組み込みオブジェクトの未定義のメソッド
以下のコードは、未定義のメソッド maximum
を呼び出した場合に配列オブジェクトで NoMethodError
エラーをトリガーする方法を示しています。
コード例:
arr = [1, 2, 3, 7, 4]
puts arr.maximum
出力:
undefined method `maximum' for [1, 2, 3, 7, 4]:Array (NoMethodError)
カスタム オブジェクトの未定義のメソッド
以下のコードは、カスタム オブジェクトで NoMethodError
エラーをトリガーする方法を示しています。
コード例:
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
出力:
undefined method `fullname' for #<Employee:0x0000565026778608> (NoMethodError)
Did you mean? full_name
上記の例では、full_name
の代わりに意図的に fullname
を使用したため、Ruby は一致するものを見つけることができませんでしたが、非常に似ている名前を見つけました。 したがって、もしかして? full_name
がエラー トレースバックに追加されました。