This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.

Evaluating Code in an Earlier Context
CodeExpectedActual
def broken_print_variable(var_name)
  eval %{puts "The value of #{var_name} is " + #{var_name}.to_s}
end
tin_snips = 5
broken_print_variable('tin_snips')
NameError: undefined local variable or method `tin_snips' for main:Object
...
NameError: undefined local variable or method `tin_snips' for main:Object
	from (irb):2:in `broken_print_variable'
	from (irb):5:in `eval'
	from (irb):2:in `broken_print_variable'
	from (irb):5
var_name = 'tin_snips'
eval %{puts "The value of #{var_name} is " + #{var_name}.to_s}
The value of tin_snips is 5
The value of tin_snips is 5
def print_variable(var_name, binding)
  eval %{puts "The value of #{var_name} is " + #{var_name}.to_s}, binding
end
vice_grips = 10
print_variable('vice_grips', binding)
The value of vice_grips is 10
The value of vice_grips is 10