みなさんこんにちは、かじりです。RubyでENVを扱う時に気をつけることをまとめました
今回私はRspecでENV1を扱う時に、次のようにしました。
ENV['variable'] = 1
これでは問題があり、これ以降のテストでも同じ値が使われていました。
今回の場合、こちらの記事2のようにするとうまくいきました。
before do
allow(ENV).to receive(:[]).and_call_original
allow(ENV).to receive(:[]).with('variable').and_return(1)
end
このようにすると、ENV['variable']の場合は1を返し、それ以外はオリジナルの動作をします。
また、先ほどの記事にENVから値を取得するときに気をつけることが書いてあります。
ENV.fetch('variable')
これには利点があって、環境変数にvariableが未定義の場合にエラーになります3。
ENV['variable']だとエラーがでません。また、以下のように未定義の場合の動作を設定することもできます。
ENV.fetch('variable', nil)
これで未定義の場合はnilになります。