[Rails5]Herokuでtaskを実行する

Rails5 と herokuの組み合わせがなかったような気がするので、やって見た。

主にはRailsコマンドでやってみたという話。

Rails(めっちゃ基本)

参考

Rake タスクの作り方(引数を複数設定してみる) - Qiita
やったこと rake タスクをジェネレート 引数付きのrakeタスクを作成 ※ rakeタスクの作り方を毎回忘れるのでメモ! rake タスクファイルをジェネレートする $ rails g task task_nam...

コマンドとか

$rails g task test_task update_user

libs/tasks/test_task.rake が作成される

namespace :test_task do
  desc "タスクの説明を書きます。"
  task update_user: :environment do
  end

end

引数とかの説明は参考URLを参照

$rails -vT
・・・省略・・・
rails test # Runs all tests in test folder
rails test:db # Run tests quickly, but also reset db
rails test_task:update_user[user_id] #タスクの説明を書きます。
rails time:zones[country_or_offset] # List all time zones, list by two-letter country code (`rails time:zones[US]`), or list by UTC offset (`rails ti...

タスクに書いたdescが表示される

$ rails test_task:update_user[1]

herokuの設定(ブラウザ)

Add-onを追加

Resources > Add-ons

検索窓からHeroku Schedulerを入力し選択

Standard – Free (それしか選択できない。dynoのせいなのか、これしか存在しないのかは不明)

Provision(準備とか調達の意味)

クレジットカードの登録をする必要がある。

Free dynoを使っていれば、有料になることはないと思う。

スケジューラ登録

Schedule recurring tasks for your appと表示されているはず。

Add new jobをクリック

タスクを実行するコマンド(rails test_task:update_user[1])を入力

すぐ試したいなら

FREQUENCY で Every 10 minuitesを選択

待てばできているはず。

公式ドキュメント

Heroku Scheduler | Heroku Dev Center
Scheduler is a free Heroku add-on for running jobs on your app at scheduled time intervals, much like cron in a traditional server.

 

コメント