Heroku 上執行 Rails app 的定時任務(Scheduled Task)

一般 Rails app 的定時任務是把 ActiveJob 包成一個 rake task 並透過 crontab 執行。這種架構的適合用在分鐘級別以上的定時任務。

但是 Heroku 並沒有提供 crontab 指令,在 Heroku 上運行定時任務必須用到一個 addon:Heroku Scheduler

Heroku Scheduler

  1. 到 Heroku App dashboard
  2. Resouces 頁籤
  3. 新增一個 Heroku Scheduler 的 addon
  4. Add new job
  5. 輸入指令 ,並設定執行頻率。這邊以每月 25 號寄送生日通知信為例 ( rails mail:birth_notification ),我設定頻率為每天,它每天都會檢查今天是不是 25 日,是則執行後面的指令
1
2
# every months 25th do this rake task
if [ "$(date +%d)" = 25 ]; then rails mail:birth_notification; fi

Heroku Scheduler 最小只提供間距為 10 分鐘級別的定時任務,若要更精細,只能使用應用層級的定時排程了例如:

幫 Free Dyno Heroku App 自訂網址再透過 CloudFlare 加上 https

近年來資安漏洞頻傳,透過 http 明文傳送機敏資訊造成的傷害也早已不是什麼新聞了,替網站加上 https 是勢在必行。

瀏覽器網址列旁的綠色鎖頭有沒有帶來一種安全的感覺。

如何免費得到 https 保護呢

本次的目標網站是架設在 Heroku 上的 Free Dyno 型應用程式,Free Dyno 其實已經有提供免費的 https 給預設的 <app-name>.herokuapp.com

繼續閱讀