これはなに
- RuboCop のバージョンアップを行った際に、新しいルール "Style/FetchEnvVar" が追加されており、仕様について調べ適用を行いました
- 適用した "Style/FetchEnvVar" のルールについて簡単にまとめました
Style/FetchEnvVar について
簡単に記載すると、 ENV['FOO']
ではなく ENV.fetch('FOO')
を利用しましょうというルールです
通常 ENV['FOO']
とプログラムを記述し、実行した際に環境変数 FOO
が未定義だった場合 nil
を返却します
nil
が返ること自体は明らかなため、 nil
で返る可能性を考慮しプログラムを組むべきと言われればその通りです
しかし、手法は文化や慣習によって対応方法は複数存在することは容易に想像できます
- 環境変数参照後にエラーを発生させたい人
- デフォルト値を定義し何事もなかったかのように処理を継続させたい人
- あえて
nil
のまま処理を継続する人 -
nil
が渡されることを考慮し忘れてしまった人
"Style/FetchEnvVar" を使用することで記述を統一するだけでなく、エラーを発生させる箇所を「環境変数を読み込んだタイミング」または、「デフォルト値を定義した状態」のいずれかに統一することが出来ます
記述方法について
下記に簡単な記述例を記載します
"Style/FetchEnvVar" ルールは自動修正にも対応しているため、個人的には積極的な "Style/FetchEnvVar" ルールの適用をおすすめします
NG
ENV['FOO']
ENV['FOO'] || 'bar'
OK
ENV.fetch('FOO')
ENV.fetch('FOO', 'bar')
他にも記述例はありますが、続きはドキュメントを参照してください
Reference