【问题标题】:Rails: Running Multiple Ruby Scripts on a ServerRails:在服务器上运行多个 Ruby 脚本
【发布时间】:2011-07-18 19:26:40
【问题描述】:
我现在有一个运行完美的 Rails 服务器(Ruby Enterprise + Passenger + Apache)。
它还应该在后台运行一些独立的 ruby 脚本(设置 localhost XML-RPC 服务器)。
最好的方法是什么?
提前致谢!
【问题讨论】:
标签:
ruby-on-rails
deployment
background-process
【解决方案1】:
考虑使用Foreman。它允许您在基于文本的简单Procfile 中指定您的后台进程,并使用foreman start 运行它们。
如果您希望通过一个命令同时启动您的网络服务器和后台脚本,并且您可以使用Passenger Standalone,您的Procfile 可能类似于:
web: passenger start
rpc: ruby rpc_server.rb
worker: script/delayed_job
【解决方案2】:
我尝试过 Starling/Workling,发现与 delayed_job 相比,它们难以配置和继续运行。在任何情况下,您都需要像 God 或 Monit 这样的进程监视器,以确保您选择的任何解决方案都能继续运行。
【解决方案3】:
cmets 中指向另一个问题的链接(由 Smar 提供,谢谢):
http://railscasts.com/episodes/127-rake-in-background
对我来说似乎工作得很好。我不需要工头或任何其他工具。
我只需要将它添加到 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