Rails:在服务器上运行多个Ruby脚本

时间:2011-07-18 19:26:41

标签: ruby-on-rails deployment background-process

我的Rails服务器目前运行完美(Ruby Enterprise + Passenger + Apache)。

还应该在后台运行一些独立的ruby脚本(设置localhost XML-RPC服务器)。 这样做的最佳方式是什么?

提前致谢!

3 个答案:

答案 0 :(得分:1)

考虑使用Foreman。它允许您在简单的基于文本的Procfile中指定后台流程,并使用foreman start运行它们。

如果您希望使用一个命令启动Web服务器和后台脚本,并且您可以使用Passenger Standalone,那么Procfile可能如下所示:

web:    passenger start
rpc:    ruby rpc_server.rb
worker: script/delayed_job

答案 1 :(得分:0)

我尝试过Starling / Workling,发现与delayed_job相比,它们很难配置并继续运行。在任何情况下,您都需要一个过程监视器,如GodMonit,以确保您选择的解决方案仍在运行。

答案 2 :(得分:0)

评论中的链接另一个问题(由Smar,谢谢):

http://railscasts.com/episodes/127-rake-in-background

似乎对我很好。我不需要Foreman或任何其他工具。

我只需将其添加到Rakefile:

desc "Start some other jobs"
task :start_other_jobs do
    system "ruby job1.rb &"
    system "ruby job2.rb &"
end

(注意&符号使其作为后台任务运行)

然后通过

启动它
rake start_other_jobs
很容易,不是吗? :d