【发布时间】:2011-05-18 02:58:26
【问题描述】:
我有一个应该在我的 rails 应用程序后面运行的守护程序,它可以进行数据库修改。我使用 ruby daemons gem 实现了该守护程序。我想在我的应用程序开始时启动该守护程序。每当我的应用程序启动时,我都需要启动该守护程序。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby
我有一个应该在我的 rails 应用程序后面运行的守护程序,它可以进行数据库修改。我使用 ruby daemons gem 实现了该守护程序。我想在我的应用程序开始时启动该守护程序。每当我的应用程序启动时,我都需要启动该守护程序。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby
如果必须在 Rails 初始化期间启动它:
invoke_daemon.rb
config/initializers/invoke_daemon.rb
但是,如果它不是强制性的,我建议创建一个二进制可执行文件或rake 任务并通过命令行手动启动它。这样,它作为一个单独的进程运行。您可以简单地将其添加到生产盒的部署脚本中,并在开发盒上手动运行它。一些例子是searchd,sphinx 和thinking_sphinx:delayed_delta rake 任务的搜索守护进程来自thinking_sphinx。
【讨论】:
根据您的知识,您必须查看 Rails Life cycle
我刚刚实现了这个东西。我已经在 Windows7 上实现了。
我创建了一个批处理文件,比如说 my_batch.bat,其中包含 ruby 命令,即 ruby my_daemon.rb 文件。
此外,为了在我的应用程序启动时执行此文件,我刚刚在 environment.rb 文件中添加了一条语句来执行该批处理文件。即系统(“my_batch.bat”)。
但我不确定这是否是实现此任务的好方法。
【讨论】: