Railsチュートリアルの第7章でpumaの設定する箇所で、以下のようなENV.fetch
というオブジェクトを初めて目にしたので調べてみました。
(※誤った記述がある場合、ご指摘いただければ幸いです。)
environment ENV.fetch("RAILS_ENV") { ENV['RACK_ENV'] || "production" }
違いは?
ENV['hoge'] // 'hoge'という環境変数が存在しないと、nilが返ってくる
ENV['hoge'] || 'default' // 存在しない場合のデフォルト値を設定できる
ENV.fetch('hoge', 'default') // fetchを使うと、引数でデフォルト値を設定できる
コードの意味
Pumaを実行する環境をRAILS_ENV
の環境にしており、存在しない場合は、ENV['RACK_ENV']
または、production
にするという設定。
environment ENV.fetch("RAILS_ENV") { ENV['RACK_ENV'] || "production" }
(HerokuではENV['RACK_ENV']
にデフォルトでproduction
が入っている。)
最後に
Railsチュートリアルでは、環境変数が存在しないと、production
が返ってくるようになっていたが、Herokuのドキュメントでは、development
となっていた。
environment ENV['RACK_ENV'] || 'development'
調べてみると、production
と書いている人や、development
と書いている人がいたので、その時の状況によって書き方が変わる可能性があるとが分かった。
どういう状況で、書き方を変えるのか意識しながら学習していきたい。