前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。
この記事で実装すること
Redis+Sidekiqを使ってactive jobを実装してそれをHeroku環境で実装する手順を説明します。
ローカル環境では既に実装している前提で進めるのでローカルでの実装方法が気になる方は以下の記事を参考にして下さい。
Sidekiqってどんなキック?
【Rails7】Redis+Sidekiq+Active Jobで指定した日時に非同期処理を行う
使用技術
Ruby 3.1.2
Rails 6.1.6
Redis
sidekiq
実装手順
1, herokuにredisを追加する
対象のアプリにRedisが既に準備されていないかを確認する
#どのアプリもredisを設定していなければ何も表示されない
$ heroku addons | grep heroku-redis
なかった場合はHerokuのCLIコマンドで追加すします。
#-a の部分を自分のアプリ名にして実行
$ heroku addons:create heroku-redis:hobby-dev -a web-album
ログに出てくるheroku addons:info ~~~
を実行すると作成状況を教えてくれます。
構築は数分あれば完了します。
2, Procfileの作成
Procfileは起動時にアプリで実行するコマンドを指定するものでアプリのwebサーバーなどを定義できるらしいです。
procfileはルートディレクトリに設置するのでこんな形で新しくファイルを作成します。
ファイルの中身を以下のように編集します。
web: bin/rails server -p $PORT -e $RAILS_ENV
worker: bundle exec sidekiq
ファイルの中身は<process type>: <command>
の形で書きます。
commandの部分でdynoで実行する必要のあるコマンドを指定します。ここではsidekiqの起動を指示しています。
ファイルの記述が終わったら編集内容をcommitしてherokuにpushします。
3, worker dynoを作成する
最後に以下のコマンドを実行します。
heroku ps:scale web=1 worker=1
以上で本番環境でもactive jobが使えるようになっているはずです!
初学者なので何か間違った記述があった場合はご指摘頂けると助かります!