上級 › method_missing で super を呼ばないと本来のエラーが消える › パターン5
method_missing で super を呼ばないと本来のエラーが消える
method_missingを独自定義すると、未定義のメソッド呼び出しをすべて横取りできます。
1 class Alarm 2 def method_missing(name, *args) 3 name == :ring ? "Ring!" : super 4 end 5 6 _________________________________________________________________________________________ ^ 7 end 8 9 a = Alarm.new 10 puts a.respond_to?(:ring)
出力: false
空欄を埋めて実行を通す
respond_to?に依存するライブラリのコードは、respond_to_missing?の実装漏れがあると誤動作します。
次の問題