search
LoginSignup
3

posted at

updated at

Organization

RuboCop v1.28 から追加された "Style/FetchEnvVar" について

これはなに

  • 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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3