Ruby - How do I catch a missing method on a passed block
J.Vogel - Copied... from Erik V. - http://www.erikveen.dds.nl/
module Kernel
def block_with_method_missing(block1, &block2)
class << block1
self
end.module_eval do
define_method(:method_missing, &block2)
define_method(:call){block1.instance_eval(&block1)}
end
block1
end
end
class Foo
def bar(&block)
block = method_missing_inspect(block)
block.call
end
def method_missing_inspect(block)
block_with_method_missing(block) do |method_name, *args|
p [:mm, method_name, args]
end
end
end
Foo.new.bar{baz(1, 2, 3)}
1 comment:
Greeat blog
Post a Comment