【问题标题】:Rails: Running Multiple Ruby Scripts on a ServerRails:在服务器上运行多个 Ruby 脚本
【发布时间】:2011-07-18 19:26:40
【问题描述】:

我现在有一个运行完美的 Rails 服务器(Ruby Enterprise + Passenger + Apache)。

它还应该在后台运行一些独立的 ruby​​ 脚本(设置 localhost XML-RPC 服务器)。 最好的方法是什么?

提前致谢!

【问题讨论】:

  • 也许 [this][1] 问题会有所帮助? [1]:stackoverflow.com/questions/388016/… 编辑:好的,我不知道为什么这会成为评论...
  • 很好找到 :) 谢谢.. 我要试试八哥

标签: 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

【讨论】:

  • ——这看起来确实简单多了。您对procfile的外观有任何指示吗?可以找到一些非常基本的示例,但不是 procfile 的真正语法是什么样子的-...编辑:在 devcenter.heroku.com/articles/procfile 找到了一篇好文章
【解决方案2】:

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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多