为一家大公司工作,我们使用parallel_tests gem来运行我们的黄瓜自动化。这适用于我们的Ruby部门,但对于我们的Jruby人,我们需要另一种选择。问题是Jruby(截至1.7)fork生成了一个没有JVM选项的新Java JVM。我已经发现我需要两个解决方案中的一个,而且我不确定如何实现其中任何一个。
或
我不知道这些解决方案是否有可能,但也许其他人会更清楚
根据Alternative for spawning a process with 'fork' in jRuby?
发布的解决方案我找到了解决方法。我们可以使用JRuby中的内置库FFI来模拟' MRI中的Process.fork。
模块JRubyProcess 要求' ffi' 扩展FFI :: Library ffi_lib FFI :: Library :: LIBC attach_function:fork,[],:int 端
pid = JRubyProcess.fork #做你的工作 结束 更多细节:
http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html
另一种选择是使用勺子: https://github.com/headius/spoon
我不是linux大师,但这些似乎是实现Jruby的简单方法。有谁知道这是否是一个有效的解决方案?
答案 0 :(得分:0)
我认为没有任何安全的方法可以像使用红宝石一样分叉jvm。有一个名为childprocess的gem,它提供跨平台进程管理。
我创建了一个名为jcukeforker的宝石,可以在jruby中的parrellel中运行这两个功能和场景。
随意提交问题或拉取请求,以便在子流程上设置环境变量。仅当您希望子流程具有与父流程不同的环境变量时,这才有意义。