簡體   English   中英

如何僅運行一次rake任務

[英]How to run only rake task once

我正在使用Ruby on Rails和Heroku。

我想要的是rake db:migrate之類的東西,它將僅運行之前未運行過的部件。

我可以設置一個可以運行其他rake任務的rake任務,但是有沒有辦法只運行那些以前沒有運行過的任務?

如果我希望自動執行rake任務,還有什么選擇?

首先,運行兩次rake任務,即rake db:migrate將不會重復也不會覆蓋數據庫列(如果已經存在)。

例如,用於將Rails應用程序基本上部署到任何地方的capistrano,每次部署應用程序時都會重新運行db:migrateassets: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM