2010-01-26 39 views
5

我目前正试图尽可能地自动化我们的rails应用程序的部署过程,以便CI服务器上的干净构建可以触发测试服务器上的自动部署。如何处理capistrano的一次性部署任务?

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

现在,这个rake任务只需要调用一次,所以将其添加到部署脚本将会过度。

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

回答

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。值得一试?

+0

当然,我使用迁移来全面更新数据。没有理由必须更改数据库模式。 – wesgarrison 2010-01-27 01:57:55

+0

那么为什么不创建一个调用执行你的一次性更改的rake任务的迁移。这应该工作... – jonnii 2010-01-27 02:52:31

+0

哇,我甚至没有考虑只是使用这种迁移。我总是将“迁移”等同于“数据库”。 – AGraefe 2010-01-27 08:43:00

1

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

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