久々に configatron gem を触る機会があったのでまとめてみた

以前から、configatron gemを使う場合、未定義のパラメータにアクセスした際の戻り値などに気をつけないといけない点があったので、まとめてみた

require 'configatron'

configatron.email = 'me@example.com'
configatron.database_url = "postgres://localhost/mack_framework_rocks"

configatron.email
=> 'me@example.com'
configatron.database_url
=> "postgres://localhost/mack_framework_rocks"

configatron.undefined        # 未定義の項目
=>                           # 空っぽいのなにかが出力される
configatron.undefined == nil # nil ではない
=> false
configatron.undefined.nil?   # でも nil? には反応出来る
=> true
configatron.undefined.class  # 正体
=> Configatron::Store

というわけで、引き続き configatron gem を使う場合は、定義済みのパラメータ名のtypoに気をつけて使う必要があるらしい

なお、この挙動は configatron の spec を見る限り仕様らしい
https://github.com/markbates/configatron/blob/master/spec/lib/configatron_spec.rb#L10