Ruby で未定義のメソッドを修正

Nurudeen Ibrahim 2023年6月21日 Ruby Ruby Method
Ruby で未定義のメソッドを修正

この記事では、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

関連記事 - Ruby Method