ruby で環境変数を手軽に読み込む

mashiro/enver · GitHub

環境変数から値を取得するときに型とかそれなりにちゃんとするのめんどくさいなと思って 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 とかで読み込んだりもできる。

便利。