Code Fix

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

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

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

 1  class Ghost
 2    def method_missing(name, *args)
 3      name == :boo ? "Boo!" : super
 4    end
 5  
 6  ________________________________________________________________________________________
                                                ^
 7  end
 8  
 9  g = Ghost.new
10  puts g.respond_to?(:boo)
出力: false

空欄を埋めて実行を通す

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

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

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

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

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