从Ruby生成Ruby程序

时间:2010-10-30 17:58:01

标签: ruby multiprocessing pipe

假设我有一个名为hello_world.rb的ruby脚本,它有一行

puts "Hello, world"

我想从另一个名为spawn_hello_world.rb的ruby脚本中调用它

pipe = IO.popen("ruby1.9.1 hello_world.rb", 'w+')
if pipe
  puts pipe.gets
end

我的问题是:是否有一种简便的方法来运行另一个ruby进程,而不必以这种方式调用操作系统?

我知道我能做到

pipe = IO.popen('-', 'w+')

将启动另一个ruby解释器,然后我可以使用

发送命令
pipe.puts "puts "Hello World""

但这似乎也很不优雅。

我基本上都在寻找与python的multiprocessing module

相当的红宝石

2 个答案:

答案 0 :(得分:1)

您可以在代码自身绑定的上下文中使用eval。这将允许您执行任意代码,同时仍然从该代码的令人讨厌的副作用封装您的程序 它不是在运行另一个Ruby解释器,但它会为你执行ruby代码。

答案 1 :(得分:0)

请你在这里给我们一些背景信息?你打算做什么?您不能只重构代码以使用"require"或“包含”方法吗?

好奇。

路易斯