metaprogramming/top_level_define_method.rb

tests/_examples/metaprogramming/top_level_define_method.rb in the metorex repository.

eval("define_method(:boom) { :bam }", TOPLEVEL_BINDING)
puts Object.new.methods.include?(:boom)
result = eval("define_method(:boing) { :bong }", TOPLEVEL_BINDING)
puts result
Object.send(:remove_method, :boom)
Object.send(:remove_method, :boing)
puts Object.new.methods.include?(:boom)
puts Object.new.methods.include?(:boing)

Output:

true
boing
false
false