如何编写运行Rails db:migrate任务的rake任务?

时间:2009-03-04 15:53:46

标签: ruby-on-rails rake

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

3 个答案:

答案 0 :(得分: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或更高版本。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

查看rake db:reset,因为这样可以完成您的目标。

要查看所有佣金任务的执行情况,请运行rake -T