dsl/eval_define_method.rb
tests/_examples/dsl/eval_define_method.rb in the metorex repository.
code = 'define_method(:boom) { :bam }'
result = eval code, TOPLEVEL_BINDING
puts "eval result: #{result.inspect}"
methods = Object.methods(true)
puts "Object has boom? #{methods.include?(:boom)}"
# Try calling it
begin
puts "calling: #{boom.inspect}"
rescue NoMethodError => e
puts "no boom: #{e.message}"
end
Output:
eval result: :boom
Object has boom? true
calling: :bam