如何在主绑定中运行eval

时间:2012-03-03 04:07:00

标签: ruby eval

如何获得主绑定?换句话说,在以下代码中,我如何才能使eval忽略先前在some_codes ... some_codes中所做的所有作业?

some_codes
...
some_codes
eval(string_to_be_executed, binding)

2 个答案:

答案 0 :(得分:2)

最简单的方法是在文件顶部创建一个绑定:

block = Proc.new{}
# some_codez
# ...
# some more of teh codez
eval(string_to_be_evaluated, block.binding)

答案 1 :(得分:2)

我最终做到了这一点,这似乎比Ben接受的答案略显优雅。

在要加载的第一个文件的开头,分配如下内容:

$main_binding = binding

然后,在必要时,我可以使用它:

eval(string_to_be_evaluated, $main_binding)