daemontools の envdir は便利ですよね。
でも環境変数をたくさん用意しないとき、その数だけのファイルをいちいち作るのは大変ですよね。
あと、環境によって動的に環境変数を切り替えたいときとか...
というわけでファイルじゃなくて JSON で環境変数をセットできるヤツを作りました。
envjson
インストール
go get するだけです。
$ go get github.com/yuya-takeyama/envjson
使い方
今のところ JSON はパイプからのみ読み込めます。
$ echo '{"FOO":"BAR"}' | envjson ruby -e 'p ENV["FOO"]'
"BAR"
envdir と比べた利点
JSON ファイルひとつだけ作ればいい
envdir では環境変数の数だけファイルを作る必要がありましたが、envjson では JSON ファイルひとつだけでいくつもの環境変数をセットできます。
環境変数を動的にセットできる
JSON はパイプから読み込むので、何らかのスクリプトで動的に JSON を生成して envjson すれば、動的に環境変数をセットできるようになります。
例えば以下のように JSON 生成スクリプトを用意します。
require 'json'
if ENV['RACK_ENV'] == 'development'
DATABASE_URL = 'mysql://user:password@localhost/development'
else
DATABASE_URL = 'mysql://user:password@production-db/production'
end
puts {"DATABASE_URL" => DATABASE_URL}.to_json
そして以下のように実行します。
$ RACK_ENV="development" ruby env.json.rb | envjson ruby app.rb
実際これを使うケースがあるかはよく考えるとあんまりない気もしますが...
まぁそれなりに便利なので、よかったら使ってみてください。