2011-03-02 61 views
3

我希望我的Rails开发环境能够为我自动启动redis和resque(以及潜在的其他项目,mongod,mysql-server等) ,在以下情况下:用`rails server`命令启动所需的附加服务(resque,redis)

  • 当启动开发服务器rails server

    • 耙的RSpec,RSpec的/规范,运行时检查:

    此外,如果在下列情况下检测正在运行的服务,而且,如果不运行启动它们太这将是很好。

  • 当启动一个rails console

当关闭rails server时,启动的子服务也应该关闭。

此类附加启动脚本的正确位置是什么?

如何避免它们在生产环境中启动(我在哪里运行/etc/init.d服务)?

回答

2

很多这些内置任务已经可以作为rake任务使用。

您可以创建一个主要的耙子任务。

例如,resque,你会得到“回扣resque:启动”,“耙resque:调度:启动”等

您可以创建一个通用的“开始”的任务,取决于休息。同样,一个“停止”任务会关闭一切。

所以,你会怎么做:

rake start # starts all associated processes 
rake stop # stops them all 

这也非常使用,从Capistrano的使用,当你结束了在其他地方部署你的代码。耙子任务很容易从Capistrano调用。

1

我认为在一些外部脚本中这样做确实比较好。在你的rails服务器命令中执行它可能会让任何人尝试你的代码真的很烦人。

例如,在一年内,一个nez developper来到您的项目。如果你的rails服务器commande在后台启动了一个这样的其他应用程序,他可能会失去方向。

在相同的想法,如果你这样做,你需要维护你的代码在你的轨道环境。可能有点棘手。保持一个独立的脚本可以更有用。

您可以将脚本添加到脚本目录中。这是一个很好的实践。但是,当你使用手册发布命令时,不是这样。

+1

简单的启动脚本听起来像是一个很好的解决方案。有最佳做法吗?像命名它./scripts/services并作为'rails services'激活? – berkes 2011-03-02 11:32:47

+1

我认为最好创建一个脚本/服务。可以是一些shell脚本。 – shingara 2011-03-02 13:57:10