我目前正在尝试尽可能自动化rails应用程序的部署过程,以便CI服务器上的干净构建可以触发测试服务器上的自动部署。
但是我遇到了以下情况: 我已将friendly_id gem添加到应用程序中。有一个迁移创建了所有必要的表。但要填写这些表,我需要调用rake任务。
现在,这个rake任务只需要调用一次,因此将其添加到部署脚本会有点过分。
理想情况下,我正在寻找类似迁移的东西,但它应该跟踪需要在部署期间调用的脚本而不是数据库。这样的野兽已经存在吗?
答案 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任务。它将更新现有数据,将来您的应用逻辑将处理新记录。