Code Fix

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

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

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

 1  class Duck
 2    def method_missing(name, *args)
 3      name == :quack ? "Quack!" : super
 4    end
 5  
 6  __________________________________________________________________________________________
                                                 ^
 7  end
 8  
 9  d = Duck.new
10  puts d.respond_to?(:quack)
出力: false

空欄を埋めて実行を通す

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

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

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

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

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