3

我希望我的 Rails 开发环境在以下情况下为我自动启动 redis 和 resque(可能在其他项目中,mongod、mysql-server 等):

  • 启动开发服务器时rails server

此外,如果以下情况检测到已经运行的服务,并且如果没有运行也启动它们,那就太好了:

  • 运行测试时,Rake rspec、rspec /spec。
  • 当启动一个rails console.

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

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

以及如何避免它们也在生产中启动(我通过 /etc/init.d 服务运行所有内容)?

4

2 回答 2

2

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

您可以创建一个主 rake 任务来完成这一切。

例如,使用 resque,您会得到“rake resque:start”“rake resque:scheduler:start”等。

您可以创建一个依赖于其余部分的通用“开始”任务。同样,“停止”任务会关闭一切。

所以你会这样做:

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

当您最终将代码部署到其他地方时,这也非常适合从 Capistrano 使用。从 Capistrano 调用 Rake 任务非常容易。

于 2011-03-02T21:58:09.270 回答
1

我认为在一些外部脚本中这样做真的更好。在您的 Rails 服务器命令中执行此操作对于尝试您的代码的任何人来说真的很烦人。

例如,在一年内,一个内兹开发者来到您的项目。如果您的 Rails 服务器命令在后台启动此类其他应用程序,他可能会失去方向感。

同样的想法,如果你这样做,你需要在你的 Rails 环境中维护你的代码。可能有点棘手。维护一个独立的脚本会更有用。

您可以在脚本目录中添加脚本。这是一个很好的做法。但不是当你用手册启动命令时谁不这样做。

于 2011-03-02T11:18:31.007 回答