【问题标题】:Starting god through rails server / passenger?通过rails服务器/乘客启动上帝?
【发布时间】:2011-07-16 02:27:42
【问题描述】:

以下情况:

我有一个服务器和一些应该一直运行的 rake 任务,例如:

# email_sender.rake (except only)
while true
  fetch all mail entries.each do |mail|
     mail.deliver
  end
end

或其他 rake 任务

# update_market.rake (except only)
while true
  Market.fetch_exchange_rate!
  sleep 1
end

为了启动和停止这些 rake 任务,我使用了 god gem,它工作得很好。 但是我不清楚一件事:我可以使用初始化程序在 Rails 中启动我的上帝服务器吗? f.e.

# rails_root/config/initializers/start_god.rb
system 'god -c /www/rails_root/config/god.config'

我在我的开发环境中尝试过,并且如我所愿,即使我退出 rails 服务器,服务器也会运行。

但是在生产模式下运行时有什么警告吗?

感谢您的意见!

附言我不想使用 CRON!这个解决方案对我来说是完美的,我不想更改为另一个调度程序/队列/后台作业系统!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rake monitoring god


    【解决方案1】:

    使用 Rails 初始化程序可能不是启动该过程的最佳方式,这并不是它们的真正用途。你用 Procfile 研究过 Foreman 吗?它可能适合你。

    http://ddollar.github.com/foreman/

    【讨论】:

    • 嗯...你能告诉我为什么它不是用初始化器启动上帝的最佳方式吗?你的意思是我要从工头开始上帝吗?
    • Rails 初始化程序旨在为 Rails 应用程序设置“环境”。将你的上帝启动调用放在那里,将你的应用程序的启动与上帝的启动紧密结合在一起。而且它不会在需要时关闭上帝,或者重新启动/重新加载。把它想象成 MVC 模式。 View层可以直接调用数据库获取信息吗?当然可以/可以/,但这并不意味着它的设计很好。是的,基本上 Foreman 会为你的 Rails 应用程序和上帝进程调用“启动”函数。
    【解决方案2】:

    您使用什么来部署您的应用程序?例如,如果您使用 Capistrano,您应该使用 Capistrano 来启动和重新加载 God(在您的生产环境中)。

    对于开发来说,foreman 是一个非常方便的工具来管理这些流程,正如 ctcherry 所提到的。您也可以直接从您的个人资料中export a god config file

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多