LoginSignup
11
4

More than 3 years have passed since last update.

ENVとENV.fetchの違いを調べてみた

Posted at

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と書いている人がいたので、その時の状況によって書き方が変わる可能性があるとが分かった。
どういう状況で、書き方を変えるのか意識しながら学習していきたい。

11
4
0

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
  3. You can use dark theme
What you can do with signing up
11
4