2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails]HerokuでRedis+Sidekiqを使用したActive Jobを実行させる

Posted at

前提

記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

この記事で実装すること

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はルートディレクトリに設置するのでこんな形で新しくファイルを作成します。

Image from Gyazo

ファイルの中身を以下のように編集します。

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が使えるようになっているはずです!

初学者なので何か間違った記述があった場合はご指摘頂けると助かります!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?