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

有帮助吗?

解决方案

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

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

其他提示

编辑: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或更高版本。

查看 rake db:reset ,因为这将完成你想要做的事情。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top