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
이 오류 역추적에 추가되었습니다.