ENV[]
とENV.fetch() {}
の違い
ENV[]
とENV.fetch() {}
の違いは指定した環境変数が存在しない場合にnil
を返すかデフォルト値を返すかの違いです。
例えば、以下の場合には、RAILS_MAX_THREADS
、DB_USER_NAME
、DB_USER_PASSWORD
が存在しない場合にはnilとなります。
detabase.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV["RAILS_MAX_THREADS"] %>
username: <%= ENV["DB_USER_NAME"] %>
password: <%= ENV["DB_USER_PASSWORD"] %>
host: db
以下のように記述するとRAILS_MAX_THREADS
、DB_USER_NAME
、DB_USER_PASSWORD
が存在しない場合には{}内に記述したデフォルト値となります。
detabase.yml
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV.fetch("DB_USER_NAME") { root } %>
password: <%= ENV.fetch("DB_USER_PASSWORD") { rootpass } %>
host: db