如何使用capistrano处理一次性部署任务?

时间:2010-01-26 11:06:26

标签: ruby-on-rails ruby deployment capistrano

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

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

现在,这个rake任务只需要调用一次,因此将其添加到部署脚本会有点过分。

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我想不出任何你想要的东西,但是如果你只需要能够以一种方式在远程服务器上运行任务,你就可以随时使用rake通过capistrano。

这里有一个问题: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。值得一试?

答案 2 :(得分:1)

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

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