在一家大公司工作,我们正在使用 parallel_tests gem 来运行我们的黄瓜自动化。这适用于我们的 Ruby 部门,但对于我们的 Jruby 人员,我们需要另一种选择。问题是 Jruby(从 1.7 开始)fork 生成了一个没有 JVM 选项的新 java JVM。我发现我需要 2 个解决方案中的 1 个,但我不确定如何实施其中任何一个。
- 我们需要能够将 JVM 选项传递给 fork,这样我们才能获得所需的所有选项。
或者
- 我们需要更改 gem 处理分叉的方式,以便所有进程都在同一个 JVM 上运行
我不知道这两种解决方案是否可行,但也许其他人会更清楚
根据在替代品上发布的在 jRuby 中使用“fork”生成进程的解决方案?
我找到了解决方案。我们可以使用 JRuby 中的内置库 FFI 来“模拟”MRI 中的 Process.fork。
模仿 MRI Ruby 中的 Process.fork
模块 JRubyProcess 需要 'ffi' 扩展 FFI::Library ffi_lib FFI::Library::LIBC attach_function :fork, [], :int end
pid = JRubyProcess.fork do #do_your_work end 更多细节:
http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html
另一种选择是使用勺子: https ://github.com/headius/spoon
我不是 linux 大师,但这些似乎是实现 Jruby 的简单方法。有谁知道这是否是一个有效的解决方案?