Ruby で未定義のメソッドを修正
Nurudeen Ibrahim
2023年6月21日
Ruby
Ruby 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
がエラー トレースバックに追加されました。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe