[英]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.