Ruby守护进程和JRuby - 替代选项

时间:2011-03-18 08:35:08

标签: ruby jruby fork

我有一个应用程序,我正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的一个宝石是daemons来创建后台作业。

问题是它使用fork + exec来创建后台进程,但这对JRuby来说是禁忌。

那么 - 是否有用于创建后台作业的替代gem / wrapper?

我目前的想法是从shell脚本调用rake并让rake任务永远运行...

先谢谢你,克里斯。

UPDATE 我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-schedulerhttps://github.com/philostler/acts_as_executor

4 个答案:

答案 0 :(得分:3)

您可能对http://torquebox.org/感兴趣,包括日程安排。

答案 1 :(得分:3)

由于您无法在JRuby中进行分支,因此您基本上不得不重构您的守护程序代码,以便守护程序可以作为标准前台应用程序执行,然后创建一个单独的守护程序启动程序,它将运行并后台守护程序。您可以查看spoon并查看使用勺子的gist来创建更精致的启动器。同样jruby-jsvc提供了使用jsvc和JRuby守护进程的粘合剂。

答案 2 :(得分:3)

Charles Nutter写的另一种叫Spoon。有关示例,请参阅他的博客http://blog.headius.com/2009/05/fork-and-exec-on-jvm-jruby-to-rescue.html和要点https://gist.github.com/321084

答案 3 :(得分:2)

我创建了一个宝石,用于轻松创建Ruby& JRuby守护进程:raad(Ruby作为守护进程)。它与MRI Ruby或JRuby完全相同,简单,轻便,透明。