Go
daemontools

envdir みたいなのを JSON でできる envjson 作った

More than 3 years have passed since last update.

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

実際これを使うケースがあるかはよく考えるとあんまりない気もしますが...

まぁそれなりに便利なので、よかったら使ってみてください。