Rails 3:仅为服务器启动执行初始化程序

时间:2011-10-18 17:52:52

标签: ruby-on-rails ruby-on-rails-3.1

我正在开发一个Rails 3.1应用程序,它需要在应用程序服务器启动时启动几个后台进程:(1)使用FSSM监视某个目录中的文件的文件系统监视进程,以及(2)a从Resque队列执行作业的Resque“worker”进程。

在我最初的尝试中,我通过在config / initializers目录中的初始化程序中生成进程来完成此操作。这个工作正常,因为进程与“rails服务器”一起正确启动和停止。但是,问题是每当我运行“rails console”或任何Rake任务时,也会执行这些初始值设定项。有没有办法让初始化程序只作为“rails server”命令的一部分运行,而不是在“rails console”或Rake任务期间运行?

或者,是否有更好的方法来启动不使用初始化器机制的后台进程?我仍然希望能够通过一个命令启动所有内容。

谢谢!

1 个答案:

答案 0 :(得分:4)

有许多不同的方法可以启动后台任务和流程。你应该使用更成熟的方法......

  • monit的
  • 新贵
  • init.d脚本

但是如果你想简化流程我建议你使用Foreman ......

http://blog.daviddollar.org/2011/05/06/introducing-foreman.html