LoginSignup
1
1

More than 5 years have passed since last update.

新しくRails.env追加したいけどDBやElasticacheの新規インスタンスを作りたくない時

Last updated at Posted at 2018-05-18

あまり需要のないテーマかもしれませんが、
Production/Staging/Development/Test
という4つの環境があるときに、
「動作確認のため、もう1つStaging環境が欲しい。インスタンス新しく作るとお金かかるし、手軽に実現したい」
というような時のためのメモです。

なお、Rails5, sidekiq, Elasticache, RDSを使っています。

手順は
1, gem 'redis-namespace' 追加
2, config/database.ymlに新しいenv(以後new_envと呼ぶ)
3, config/secrets.ymlにnew_envのsecret_key_baseを追加
4, config/environment/new_env.rbを追加
5, config/settings.ymlにstagingを追加
6, config/initializers/cors.rbでAPIを制御
(2~6は通常のenvを追加する手順、こちらを参照)
7, config/initializers/sidekiq.rbを編集
8, envで環境変数を設定

6,7を解説します。

sidekiq.rbを編集

Elasticacheの新たなインスタンスを立てずとも、以下のようにnamespaceを書くと、redisの〇〇-staging内で勝手に分けてくれるらしいです。すごい。

sidekiq
Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://hego', namespace: "sidekiq_#{Rails.env}" }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://hoge', namespace: "sidekiq_#{Rails.env}" }
end

envで環境変数を設定

新しい環境を作ったからといっても、動作確認用の環境なら新たなDBインスタンスを立てるまでもありません。RDSの〇〇-stagingというDBの中にrds_stagingとrds_new_envというデータベースを作れば、あとは環境変数のRDS_DB_NAMEを変えるだけです。

RDS_DB_NAME=rds_new_env

この辺りの経験値が少ないので、間違いなどご指摘ありましたらよろしくお願いいたします。

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