要約
定義されていないメソッドの呼び出しが行われたときに発生します。
例:
self.bar # => -:1: undefined method `bar' for #<Object:0x401a6c40> (NoMethodError)
プライベートなインスタンスメソッドを呼び出そうとした場合にも発生します。
例:
"".puts # => NoMethodError: private method `puts' called for "":String
メソッド呼び出しの形式でなければ NameError 例外が発生します。
例:
bar # => -:1: undefined local variable or method `bar' for #<Object:0x401a6c40> (NameError)
目次
- 特異メソッド
 - インスタンスメソッド
 
継承しているメソッド
- NameErrorから継承しているメソッド
 - Exceptionから継承しているメソッド
 
特異メソッド
new(error_message = "", name = nil, args = nil, priv = false) -> NoMethodError[permalink][rdoc][edit]new(error_message = "", name = nil, args = nil, priv = false, receiver:) -> NoMethodError- 
例外オブジェクトを生成して返します。
- [PARAM] error_message:
 - エラーメッセージを表す文字列です
 - [PARAM] name:
 - 未定義だったシンボルです
 - [PARAM] args:
 - メソッド呼び出しに使われた引数です
 - [PARAM] priv:
 - private なメソッドを呼び出せる形式 (関数形式(レシーバを省略した形式)) で呼ばれたかどうかを指定します
 - [PARAM] receiver:
 - 原因となったメソッド呼び出しのレシーバです
 
例:
nom = NoMethodError.new("message", "foo", [1,2,3]) p nom.name p nom.args # => "foo" [1, 2, 3] 
インスタンスメソッド
args -> [object][permalink][rdoc][edit]- 
メソッド呼び出しに使われた引数を配列で返します。
例:
begin foobar(1,2,3) rescue NoMethodError p $! p $!.name p $!.args end # => #<NoMethodError: undefined method `foobar' for main:Object> :foobar [1, 2, 3] private_call? -> bool[permalink][rdoc][edit]- 
メソッド呼び出しが private なメソッドを呼び出せる形式 (関数形式(レシーバを省略した形式)) で呼ばれたかどうかを返します。