Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

再読み込みする設定ファイルはKernel.loadを使うと幸せになれるかもしれない

Dotenvは.envの値をRubyの組み込み変数「ENV」に格納してくれます。
ENV自体はHashのようなインターフェイス(keyとかvalueとか)を持っています。
しかし、数値を格納できないという欠点があります。
仮に.envに数値を入れとしても

> Dotenv.load
=> {"USER_NAME"=>"Den2Taro", "PASSWORD"=>"Unique and Exciting Campus", "SENSOR"=>"123"}

のように、文字列に置換されます。
.to_iすりゃいいのですが、どうにも面白くありません。

実は、Kernelクラス内蔵のloadメソッドを使うとこの問題は何とかなってしまいます。

>> load './.env'
=> true
>> p USER_NAME
"Den2Taro"
=> "Den2Taro"
>> p SENSOR
123
=> 123

ファイル名は指定できるのでyaml形式でloadする事も可能です。
その上、requireと違いloadは何度でもリロードできます。
たまに値が変わる設定ファイル系はこの手法で呼ぶのも手ですね。