Rake 自動排程

Mino chen
CodeForMyself
Published in
Feb 13, 2021

想要自動執行程式嗎? 這時候你需要 Rake 的自動排程。包成簡單的 Rakefile,只要執行 rake 一次就可以幫我同時做完這些事情

使用方法:建立 rakefile,並在裡面寫下你的任務清單:

desc "mail sender" 
task :sendemail do
puts "get email list from database "
sleep 2
puts "sending email....."
sleep 2
puts "down"
end
# rake sendemail 執行任務
task :default => :sendemail
#預設的任務是 sendemail
  • desc 後面加上描述之後,當你執行 rake -T 可以查詢哪些任務可以執行
  • task 是要執行的任務
  • sendemail 是要執行的任務名 # 要執行時在終端機打 rake sendemail
  • task :default => :sendemail 是你預設的任務 #這樣直接打 rake 就會執行了

如果我的任務之間有先後順序怎麼辦?如果我上廁所前想要先開門怎麼辦?

task :open_the_door do
puts "open door"
end

task :go_pupu => :open_the_door do
puts "oh...hmmmmmmm"
end

我只要把需要先完成的任務,箭頭 =>加在後完成的任務後面

當我執行 rake go_pupu 時,就會有以下結果:

它記得先開門才大便了棒棒(?)

那麼這個東西到底什麼時候才使用到呢?

基本上我們在 rails 的世界裡常常會使用到,就是建立資料表的時候,具象化就需要 rails db:migrate,它的前身就是 rake db:migrate ,它的 db 是用 namespace 包起來的,類似這樣

#用 namespace 包起來
namespace :db do
desc "資料庫處理"
task :migrate do
puts "migration"
end
end

了解了 rake 在 rails 的功用之後,是不是又更踏實了一點呢讚讚!

--

--