Ruby에서 정의되지 않은 메서드 수정

Nurudeen Ibrahim 2023년6월21일
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이 오류 역추적에 추가되었습니다.

관련 문장 - Ruby Method