HOWTO · Ruby
Ruby で未定義のメソッドを修正
この記事では、Ruby プロジェクトで最も一般的なエラーである undefined method を修正する方法について説明します。
この記事では、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 がエラー トレースバックに追加されました。