【rails/capistrano】railsでcapistrano deploy内で、secrets.yml or secrets.yml.encの値を使う方法
環境 rails5.1.3
railsでcapistrano deployする時に deploy.rb や、rake タスク内で、 railsのsecrets ファイルを参照したいことがよくある。
1週間くらい うまく使えないか調べてたが 方法があった
方法
deploy.rbの中で、下記を記述するだけ 今回は、ridgepoleを動かすために database.ymlの値を設定する
require 'rails' secrets = YAML.parse(Rails::Secrets.read).to_ruby[env.stages.first]['db'] set :default_env, { DATABASE_NAME: secrets['DATABASE_NAME'], DATABASE_HOST: secrets['DATABASE_HOST'], DATABASE_USER_NAME: secrets['DATABASE_USER_NAME'], DATABASE_PASSWORD: secrets['DATABASE_PASSWORD'], }
この記述の処理自体は、ローカルで行われるが
env.stages.first
で、deploy先の環境を取得できる(staging とか)
設定した値は下記で取得できる
ENV['DATABASE_NAME']