The code below throws the following exception:
/tmp/foo.rb:10:in `alias_method': undefined method `substitute_do_it'
for module `Foo' (NameError)
This confuses me, because module Foo clearly has a substitute_do_it
method. I want the code to print out:
original do_it
substitute do_it
code:
module Foo
class << self
def do_it
puts "original do_it"
end
def substitute_do_it
puts "substitute do_it"
end
def do_substitute
module_eval { alias_method :do_it, :substitute_do_it }
end
end
end
Foo.do_it
Foo.do_substitute
Foo.do_it
I thought I understood Ruby…