rails で Redis の設定を database.yml の様に環境変数から読み込む
概要
rails の database.yml では環境変数から設定値を取得し、取得出来なかった場合は、デフォルト値を使う書き方が出来ます。同じ事を Redis の設定ファイルでも行う方法です。
若手から実現したかったけど、やり方が分からずに断念していたと聞いたので、記事に残すことにしました。
環境
Rails 6.0.3
Redis の設定ファイル
設定ファイルは config/redis.yml です。
default: &default
host: <%= ENV.fetch('SESSION_DB_HOST') { 'session_db' } %>
port: <%= ENV.fetch('SESSION_DB_PORT') { 6379 } %>
development:
<<: *default
test:
<<: *default
production:
<<: *default
host と port を database.yml と同じく、環境変数が存在すれば環境変数から取得しセット、環境変数が存在しない場合はブロックで指定したデフォルト値をセットする様にしています。
Redis の初期化
config/initializers/redis.rb で Redis の初期化を行います。
path = Rails.root + 'config/redis.yml'
yaml = Pathname.new path if path
config =
if yaml && yaml.exist?
YAML.load(ERB.new(yaml.read).result)[Rails.env] || {}
else
raise "Could not load redis configuration. No such file - #{path}"
end
Redis.current = ConnectionPool.new(size: 10, timeout: 5) do
Redis.new(
host: config['host'],
port: config['port']
)
end
YAML.load(ERB.new(yaml.read).result)[Rails.env] の箇所で、読み込んだ redis.yml を ERB クラスを使って、eRuby スクリプトとして処理をしています。
参考
Author And Source
この問題について(rails で Redis の設定を database.yml の様に環境変数から読み込む), 我々は、より多くの情報をここで見つけました https://qiita.com/masaxyz_labo/items/22ccdab085a0b1262cec著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .