railsのENV[]とENV.fetch()の違い
ENV[]
とENV.fetch()
の違いがわかっていなくで少しはまった。- localでfailした
local環境でもstagingやprodutionの環境変数部分は展開しているっぽい
修正前
staging: <<: *default host: <%= ENV["DB_HOSTNAME"] %> database: <%= ENV["DB_NAME"] %> username: <%= ENV["DB_USERNAME"] %> password: <%= ENV["DB_PASSWORD"] %> socket: <%= ENV["DB_SOCKET"] %>
- 修正後
staging: <<: *default host: <%= ENV.fetch("DB_HOSTNAME") %> database: <%= ENV.fetch("DB_NAME") %> username: <%= ENV.fetch("DB_USERNAME") %> password: <%= ENV.fetch("DB_PASSWORD") %> socket: <%= ENV.fetch("DB_SOCKET") %>
key に関連づけられた値を返します。該当するキーが登録されていない時には、引数 default が与えられていればその値を、ブロックが与えられていればそのブロックを評価した値を返します。そのいずれでもなければ例外が発生します。