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
して評価しようとしましたBinding
が、どちらも他の環境からクラスを隠すことはありません。これを行うための良い方法はありますか?