puma-devでdirenvの使い方
puma-devとdirenvを使っていたら、環境変数が読み込めてないので調べてみた。
背景
puma-devを使って開発を行っていて、Twitter連携をしていたら、400 Bad Requestエラーが出た。どうやら環境変数で設定してあるAPIのキーが読み込めていない様子。
direnvを使っていて、rails s
で実行している時は動いているので、おかしいなぁと調べて、puma-devは以下の3種類の外部ファイル形式の環境変数の読み込みしか対応していなかったようだ。
- .env
- .powrc
- .powenv
.envはdotenvで利用されるファイル、残りの二つはpowなどで利用できたファイルである。
解決方法を調べてみると、同じような質問がpuma-devのissuesにあった。 direnvの方にdotenvのファイルを読む仕組みがあるのでそれを使えということらしい。
# .envrc
dotenv
# .env
export TWITTER_API_KEY=...
export TWITTER_API_SECRET=...
少しハマった点としては、.env
は通常のdotenvの記述方法ではなくて、頭にexportを付けてbashとして実行する必要があった。
まとめ
というわけで、direnvとpuma-devの併用は以下のようにすればOK。
dotenv
と書いた.envrc
ファイルを置く.env
ファイルに環境変数を書く
その他メモ
.gitignore
には、.env
だけ書いておき、.env.sample
にキーだけを書いたファイルをコミットする。dotenv
と書かれた.envrc
はコミットして良い。