ruby-on-rails - 如何在服务器启动时运行 capistrano 任务?

标签 ruby-on-rails ruby capistrano startup

我一直在思考这个问题并搜索了很长时间都没有找到任何东西,所以我假设我遇到了 XY 问题。

让我描述一下我的问题,这听起来很常见。

我们使用 capistrano 来部署我们的网络应用程序和数据库。相关部分是我们有一个用于延迟作业的专用服务器,我们使用 capistrano 部署到它并启动/重新启动进程。这是自定义数量的工作人员,具有 2 个不同的 Gemfile 和 3 个队列。

我想做的是在服务器重启时启动它们,或者更重要的是,在服务器克隆 + 启动时启动它们。

我已经尝试从服务器本身调用 cap production delayed_job:custom_start.. 没有用。 (这是我的非XY问题调整题的核心)。不确定它是否有意义。但我想知道这是否可能。 custom_start 是启动我们的工作组的任务。

或者我正在考虑将代码抽象为rake 任务或脚本或其他东西,并从capistrano 和任何地方调用它我需要添加它才能在启动时启动。这样更有意义吗?

编辑:刚刚找到this post ..令人沮丧..

附注我只是想澄清一下,当我说服务器时,我指的是我的 Machine/ec2 实例,而不是我的 Web 应用程序正在重启。

最佳答案

我的 Jenkins 部署作业充满了开发人员可以调用的直接任务,例如 cap dev app:fetch_logs、cap qa sanitize_environment 等。

Capistrano 的这个特性很简单并且经过验证。

我猜你想做的是使用 Capistrano 来设置 rc.d 文件。是的,你可以这样做。此时你应该使用 chef/puppet 吗?考虑。 Scalr/Rightscale 也很有趣。

您可以为所有工作变量添加一个 bash 脚本作为 .erb 模板,然后将脚本上传到 deploy_to 目录。最后,您可以设置另一个任务 (#{sudo}) 以将 rc.d 包装器注入(inject) rc.d。或者你不是 rc.d 包装器到你的 bash 脚本,只是从 rc.d-local 调用 bash 脚本。您可以使用 sed 附加到 rc.d-local。

关于ruby-on-rails - 如何在服务器启动时运行 capistrano 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245094/

相关文章:

ruby-on-rails - Rails API - 期望显示已创建对象的 json。获取没有对象的 302 状态码

ruby-on-rails - rails : "Stack level too deep" error when calling "id" primary key method

ruby - Fastfile 中的代码到底是什么

ruby-on-rails - 如何在 capistrano 任务中获取当前角色名称

mysql - ActiveRecord 查询日期之间并具有第一个属性值

ruby-on-rails - 使用restful_authentication验证电子邮件帐户后rails自动登录

ruby - 选择性 Ruby 数组切片

ruby - Snow Leopard 上的 RVM : Can install 1. 8.7 没问题,但不是 1.9.3 或 1.9.2(可能是体系结构问题?)

ruby-on-rails - 使用 capistrano 在 Rails 应用程序上部署 ruby​​ - cap deploy :setup failing

ruby-on-rails - 有没有办法使用Capistrano部署到 Vagrant 的VM?