[英]How to run only rake task once
我正在使用Ruby on Rails和Heroku。
我想要的是rake db:migrate之类的东西,它将仅运行之前未运行过的部件。
我可以设置一个可以运行其他rake任务的rake任务,但是有没有办法只运行那些以前没有运行过的任务?
如果我希望自动执行rake任务,还有什么选择?
首先,运行两次rake任务,即rake db:migrate
将不会重复也不会覆盖数据库列(如果已经存在)。
例如,用于将Rails应用程序基本上部署到任何地方的capistrano,每次部署应用程序时都会重新运行db:migrate
或assets:precompile
等任务。 因此,无需担心。
要自动运行任务,您将需要诸如cron作业之类的任务。 只要有一颗伟大的红宝石宝石,您就可以使用最受欢迎的红宝石语法来安装这样的作业。
安装好gem并运行wheneverize .
在rails应用程序的根目录中,您可以编辑scheduler.rb并添加如下内容:
every :sunday, :at => '12pm' do
rake my:awesome:task
end
Github页面以及默认的scheduler.rb
许多有关如何构建这些作业的有用示例。
whenever --update-crontab
您都可以将rubyesque cronjobs写入crontab,它将在您希望的时间定期运行任务。
**编辑
多项任务合而为一:
task :setup => [:a, :b, :c]
task :a do
%x(bash command)
end
task :b do
rake db:migrate
end
task :c do
rake whatever
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.