注意
特別なことは全くしていません。そして Capistrano に限った話でもないです。
結論
dotenv
を用いる。
詳細
1. dotenv をインストールする
普通に bundle install
しましょう。
2. dotenv を require する
Rails だと不要ですが*1、.env
ファイルの内容を用いるために、dotenv
を require
する必要があります。Capfile
の中で require 'dotenv/load'
と書いて require
しましょう。
3. .env ファイルを作る
デプロイ先のホスト名やポート番号、鍵の場所などを書いた .env
ファイルを作りましょう。例としては以下のような感じです。
CAP_HOST="123.123.123.123" CAP_PORT="22" CAP_USER="foobar" CAP_KEY="/path/to/key"
4. デプロイ設定ファイル内で呼び出す
.env
に書いた値は ENV['CAP_HOST']
のようにして呼び出せます。あとはそれをデプロイ設定ファイルに埋め込んでいけばハードコーディングを避けることができて隠すことができます。
例えば以下のような感じになります。
server ENV['CAP_HOST'], user: ENV['CAP_USER'], roles: %w{web}, ssh_options: { keys: File.expand_path(ENV['CAP_KEY']), port: ENV['CAP_PORT'] }
注意
.env
は.gitignore
に書いておきましょうCapistrano
のサンプルコードで現れる%w()
という記法だと変数の展開がなされないため、%W()
に置き換えて、#{[ENV['CAP_HOST']}
のようにしましょう*2