【问题标题】:Start up required additional services (resque, redis) with `rails server` command使用 `rails server` 命令启动所需的附加服务(resque、redis)
【发布时间】:2011-03-03 05:58:09
【问题描述】:

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

  • 启动开发服务器时rails server

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

  • Rake rspec、rspec /spec,在运行测试时。
  • 启动rails console时。

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

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

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

【问题讨论】:

    标签: ruby-on-rails service resque


    【解决方案1】:

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

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

    例如,使用 resque,你会得到 "rake resque:start" "rake resque:scheduler:start" 等。

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

    所以你会这样做:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 一个简单的启动脚本听起来是个不错的解决方案。有最佳实践吗?喜欢将其命名为 ./scripts/services 并以 rails services 命名?
      • 我认为最好创建一个脚本/服务。可以是一些 shell 脚本。
      猜你喜欢
      • 2016-07-20
      • 2019-02-12
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      相关资源
      最近更新 更多