0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails初学者】Heroku RedisをRails/Sidekiqに繋いでみる

Last updated at Posted at 2025-04-01

【Rails初学者】Heroku RedisをRails/Sidekiqに繋いでみる

こんにちは。
エンジニア転職を目指し、学習中の現役看護師です。
今回、RailsアプリをHerokuにデプロイしつつ、Redisを使ってSidekiqを動かすまでの手順を、表示されたエラーや対処も含めて備忘録のために、まとめてみました。


この設定でできるようにしたいこと

  • RailsアプリにHeroku Redisを導入したい
  • Sidekiq(非同期処理)をRedisで動かしたい
  • Redisの証明書エラーを解決したい

環境

  • Ruby 2.7.7
  • Rails 6.0.6.1
  • Sidekiq
  • Heroku(Miniプラン)
  • Redis gem 4.8.1

1. Heroku Redisを追加

Heroku CLIでアドオンを追加:

heroku addons:create heroku-redis:mini --app アプリ名

数分待つと、以下のように環境変数が自動で設定される

REDIS_URL

REDIS_TLS_URL ← これがSSL接続用

表示されたエラー:SSL証明書エラー

SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain)

Heroku Redisは自己署名証明書を使用しているため、そのままだとSSL接続時に失敗してしまうこともある。

Redis設定(config/initializers/redis.rb)

$redis = Redis.new(
  url: ENV["REDIS_TLS_URL"],
  ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
)

REDIS_TLS_URL を指定し、verify_mode を VERIFY_NONE にするといいらしい。

Sidekiqの設定(config/initializers/sidekiq.rb)

Sidekiq.configure_server do |config|
 config.redis = {
   url: ENV["REDIS_TLS_URL"],
   ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
 }
end

Sidekiq.configure_client do |config|
 config.redis = {
   url: ENV["REDIS_TLS_URL"],
   ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
 }
end

動作確認

Herokuのコンソールから接続確認

heroku run rails console --app アプリ名
Rails.cache.write("test_key", "Hello Redis")
Rails.cache.read("test_key")
# => "Hello Redis"

これで値が返ってきたらRedis接続できている。

エラーが表示された際の確認事項

エラー内容 原因 解決策
certificate verify failed SSL証明書の検証失敗 ssl_params: { verify_mode: VERIFY_NONE } を忘れてないか
REDIS_TLS_URL がない Redisアドオンがまだ作成中なのか heroku addons:info で確認
Sidekiqが動かない workerが停止中なのか heroku ps:scale worker=1 を実行

ActionCableなど他用途でも同じ対応が可能らしい

# config/cable.yml
production:
  adapter: redis
  url: <%= ENV["REDIS_TLS_URL"] %>
  channel_prefix: your_app_production
  ssl_params:
    verify_mode: <%= OpenSSL::SSL::VERIFY_NONE %>

まとめ

  • Heroku Redisは自己署名証明書なのでSSL設定が必須
  • REDIS_TLS_URL を使用(← REDIS_URL ではない)
  • verify_mode: OpenSSL::SSL::VERIFY_NONE を忘れない

初学者のため、間違えていたらすいません。
引き続き、学習を進めます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?