【问题标题】:How to handle one-off deployment tasks with capistrano?如何使用 capistrano 处理一次性部署任务?
【发布时间】:2011-01-09 11:36:32
【问题描述】:

我目前正在尝试尽可能自动化我们的 Rails 应用程序的部署过程,以便 CI 服务器上的干净构建可以触发测试服务器上的自动部署。

但我遇到了以下情况: 我已将friendly_id gem 添加到应用程序中。有一个迁移可以创建所有必要的表。但要填写这些表格,我需要调用 rake 任务。

现在,这个 rake 任务只需要调用一次,所以将它添加到部署脚本中就有点过头了。

理想情况下,我正在寻找类似迁移的东西,但它应该跟踪部署期间需要调用的脚本,而不是数据库。这样的野兽已经存在了吗?

【问题讨论】:

    标签: ruby-on-rails ruby deployment capistrano


    【解决方案1】:

    我想不出任何可以完全满足您需求的东西,但如果您只需要能够以一种一次性的方式在远程服务器上运行任务,您可以随时通过 capistrano 使用 rake。

    这里有一个这样的问题:How do I run a rake task from Capistrano?,它也链接到这篇文章http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/

    编辑:我想知道是否可以创建一个不做任何数据库更改而只调用 rake 任务的迁移? Rake::Task["task:name"].invoke。值得一试吗?

    【讨论】:

    • 当然,我使用迁移来批量更新数据。没有理由您必须更改数据库架构。
    • 那么为什么不创建一个迁移来调用 rake 任务来执行你的一次性更改。这应该工作......
    • 哇,我什至没有考虑为此使用迁移。我总是将“迁移”等同于“数据库”。
    【解决方案2】:

    我认为运行该 rake 任务是迁移到使用 friendly_id 的一部分。当然,您已经创建了表格,但还没有完成!在真正迁移之前,您仍然需要进行一些数据更新。

    从您的迁移中调用 rake 任务。它将更新现有数据,新记录将在未来由您的应用逻辑处理。

    【讨论】:

      【解决方案3】:

      看起来after_party gem 完全符合您的要求。

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多