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 分鐘級別的定時任務,若要更精細,只能使用應用層級的定時排程了例如:

Rails 的 sidekiq 設置筆記

Sidekiq 是一個能夠並發處理 Ruby 任務的套件,大致上的運作方法是:將任務 push 至 redis 的 queue 中,sidekiq 的 workers 再到 queue 一個個 pop 任務出來運算。

安裝

1
2
# Gemfile
gem 'sidekiq'
1
bundle install
繼續閱讀

在 Mac 上安裝 Ruby

Mac OS X 內建的 Ruby 版本並非最新版,只安裝了維持系統運行,最低需求版本的 Ruby,所以要安裝最新版本的 Ruby 就得額外安裝。

Install Ruby

Via Homebrew

brew install ruby

Via Ruby Version Manager (RVM)

如果開發環境有安裝多個版本的 Ruby 的需求,就使用 RVM 來安裝與管理 Ruby 吧,可以透過 RVM 自由切換使用的 Ruby 版本與 Gemset,保持開發環境的乾淨。

詳情見 https://rvm.io/

1
2
3
4
5
# Install GPG keys:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

# Install RVM:
curl -sSL https://get.rvm.io | bash -s stable
繼續閱讀

Port 被佔用了?

有看過即刻救援嗎?我們只需要像史上最強老爸一樣,即可解決此問題。

這邊使用 port 3000 當做例子

繼續閱讀

為 Ubuntu 18.04 LTS 安裝 Python 3.6

原則上,Ubuntu 18.04.1 LTS 已經內建 Python 3 了,保險起見先檢查一下:

1
2
3
sudo apt update
sudo apt upgrade
python3 -v

此時的 Python 的版本應有 3.6 以上,我的版本為 3.6.7。

安裝 pip 3

繼續閱讀

為 Ubuntu 18.04 LTS 安裝 Nvidia GPU driver

列出支援的顯示卡驅動:

1
ubuntu-drivers devices

我這邊使用 Nvidia GTX 1060 6G,當前的驅動版本為 415,若是列出的版本太舊(390),請執行下面這行把 Nvidia Driver 加入 apt 的來源中:

1
2
3
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices

看看是否有更新的驅動程式版本可以使用。

繼續閱讀

好用的軟體 for Mac OSX (一般使用者)

每個軟體會附上官網連結,有支援透過 Homebrew 一行指令安裝的話會一起把指令附上。

前言

感謝家人在我升大學的那年,讓我買了這台 13” MacBook Air。年少無知,一開始買 MacBook 的原因真的是因為看起來很潮。

輕薄,高續航,順暢的使用者體驗等等優點都是矇到的。

網路上連文都沒爬,就下手買了個硬碟 256G,Ram 4G 的機型。

也就沒有看到各種無用的跑分數據,或是遊戲支援度超低這些缺點啦

好險當初只有做錯這麼一個選擇:Ram 沒升 8G。

萌新拿到電腦的第一件事居然是去圖書館翻 Mac 的使用說明書,結果誤觸 Xcode,程式生涯從此開始。

廢話完了,進入正題。

繼續閱讀