我想在 Ruby 中有多个可以执行任意代码的环境。这段代码可能定义了一个新类,我只希望这个新类在定义它的环境中可用。
例如,我想做这样的事情:
class Environment
def evaluate(&code)
# Evaluate the code in this environment.
end
end
e1 = Environment.new
e2 = Environment.new
e1.evaluate do
class InnerClass
# ...
end
puts InnerClass.nil? # false
end
e2.evaluate do
puts InnerClass.nil? # true
end
我已经尝试instance_eval
在 a 中使用和评估Binding
,但是这些都不会隐藏其他环境中的类。有没有很好的方法来做到这一点?