3

我想在我自己的 rake 任务中运行 db:migrate VERSION=0 然后 db:migrate 。我对如何做到这一点感到困惑。我需要特殊的需求声明吗?我的 rake 任务将驻留在 Rails 应用程序的 lib/tasks 目录中。谢谢。

4

3 回答 3

2

编辑:Rake::Task[] 不接受参数,你必须在 ENV 中设置它。此外,您必须重新启用该任务才能多次运行它。

ENV['VERSION']= '0'
Rake::Task['db:migrate'].invoke
Rake::Task['db:migrate'].reenable
ENV.delete 'VERSION'
Rake::Task["db:migrate"].invoke

注意:Rake::Task.reenable 需要 Rake 0.8.2 或更高版本。

于 2009-03-04T16:05:31.167 回答
2

您的任务是否仅取决于拥有一个干净的数据库?如果是这种情况,那么您可以这样做:

任务 :my_task => [:environment, 'db:reset']

于 2009-03-05T21:11:32.763 回答
0

签出rake db:reset,因为这将完成您正在尝试做的事情。

要查看所有 rake 任务的作用,请运行rake -T

于 2009-03-04T16:06:30.693 回答