unicornの起動スクリプトで環境変数を設定してもreload(USR2シグナル)では再読み込みされない
環境
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 では環境変数がセットされませんでした。
該当箇所のコードは以下のようになってます。
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側に置きたいなあ、と思っていたんですが、その考え方が間違ってるのでしょうか……?
Author And Source
この問題について(unicornの起動スクリプトで環境変数を設定してもreload(USR2シグナル)では再読み込みされない), 我々は、より多くの情報をここで見つけました https://qiita.com/kskomori/items/5129de71fcd0fa95e58e著者帰属:元の著者の情報は、元の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 .