LoginSignup
2
1

More than 5 years have passed since last update.

unicornの起動スクリプトで環境変数を設定してもreload(USR2シグナル)では再読み込みされない

Last updated at Posted at 2016-04-15

環境

Rails:4.2.0
Unicorn:5.1.0
rails env:production

Unicornの環境変数は再読み込みされない?

lib/tasks/unicorn.rake で、unicornのstartとかstopとかrestartできるようにしてます。
バージョン管理に含めたくない定数とか、環境変数に入れますよね。たぶん。
そこで、unicorn.rake に環境変数を設定したところ、bin/rake unicorn:restart では環境変数がセットされませんでした。

該当箇所のコードは以下のようになってます。

lib/tasks/unicorn.rake
ENV['SECRET_VALUE'] = 'abcdefg'

task(:restart) { unicorn_signal :USR2 }

def unicorn_signal signal
  Process.kill signal, unicorn_pid
end

で、どうしたか?

実は、先の unicorn の起動スクリプトで、stop&start すると、環境変数が再読み込みされました(当たり前か)。
個人で勉強用にやってるものだったので、とりあえずこれで対応をしてます。

本当はどうするべきなのか?

gem で dotenv-rails を使うのがよいのかな、と思います。
こちらが参考になります。→ http://qiita.com/closer/items/f8d8ba00ae86d7051764

コレ間違ってる、新しいやり方がある、こっちのほうがオススメ、とかあれば教えてもらえると助かります!

追記

dotenvをproduction環境で使わないほうがいいよ、って話もあるようです。→ http://t-cyrill.hatenablog.jp/entry/2015/03/25/024625

ただ、バランシングして複数のウェブサーバがいたりすると、ウェブサーバ側に環境変数設定を書いていて、もし書き換える必要がでたときに、バランサから外して書き換えて、ってことをやらなきゃいけなくなりそう。
なので、できるだけunicornの起動スクリプトやRails側に置きたいなあ、と思っていたんですが、その考え方が間違ってるのでしょうか……?

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