Code Fix

上級method_missing で super を呼ばないと本来のエラーが消える › パターン3

method_missing で super を呼ばないと本来のエラーが消える

method_missingを独自定義すると、未定義のメソッド呼び出しをすべて横取りできます。

 1  class Cat
 2    def method_missing(name, *args)
 3      name == :meow ? "Meow!" : super
 4    end
 5  
 6  _________________________________________________________________________________________
                                                ^
 7  end
 8  
 9  c = Cat.new
10  puts c.respond_to?(:meow)
出力: false

空欄を埋めて実行を通す

広告
広告スロット(未設定)

method_missing で super を呼ばないと本来のエラーが消える

想定していない呼び出しに対してsuperを呼ばずnilなどを返してしまうと、本来出るはずだったNoMethodErrorが出ず、バグが静かに握りつぶされます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)