LoginSignup
4
4

More than 5 years have passed since last update.

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

Posted at

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

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

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

4
4
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
4
4