ruby で環境変数を手軽に読み込む
環境変数から値を取得するときに型とかそれなりにちゃんとするのめんどくさいなと思って enver というライブラリを作った。
string, integer, boolean, array で読み込める。
こんなかんじ。
export CLIENT_KEY=key export CLIENT_SECRET=secret export SERVERS=4 export DEBUG=true export KEYWORDS=foo,bar,buzz
env = Enver.load do string :client_key, 'CLIENT_KEY' string :client_secret, 'CLIENT_SECRET' integer :servers, 'SERVERS', default: 2 boolean :debug, 'DEBUG', default: false array :keywords, 'KEYWORDS', pattern: ',' end env.client_key # => 'key' env.client_secret # => 'secret' env.servers # => 4 env.debug # => true env.keywords # => ['foo', 'bar', 'buzz']
partial を使うと名前空間で切って読み込めたりする。
export TWITTER_CLIENT_KEY=key export TWITTER_CLIENT_SECRET=secret
env = Enver.load do partial :twiter, 'TWITTER_' do string :cleint_key, 'CLIENT_KEY' string :cleint_secret, 'CLIENT_SECRET' end end env.twitter.client_key # => 'key' env.twitter.client_secret # => 'secret'
value メソッドに渡すブロックで型変換してるだけなのでやりようによっては DateTime とかで読み込んだりもできる。
便利。