##はじめに
先日初めて、config
下のsettings.yml
に定数を設定し、同時に環境ごとの定数も設定しました。
呼び出し方や使い方など、備忘録として纏めます。
##なぜsettingsに定数を設定するか
管理を楽にして、変更があった際に対応しやすくするためでしょう。
例えば、もうすぐ変わる消費税率で考えてみます。いろんなファイルに、tax = 8
など別々に定義されていたら、修正するのが大変です。修正漏れも起こるかもしれませんね。
##実際にsettingsに書いてみる
ファイルの配置場所はapi/config
下になります。
#こんな感じで書きます
api_version: '1.0.0'
user:
minimum_voting_age: 18
minimum_smoking_age: 20
include_tax:
to_go: 1.08
eat_in: 1.10
##定義した定数を呼び出してみる
rails c
でコンソールを起動。
[1] pry(main)> Settings.api_version
=> "1.0.0"
[2] pry(main)> Settings.user.minimum_smoking_age
=> 20
[3] pry(main)> Settings.include_tax.to_go
=> 1.08
Settings.〜〜.〇〇
で呼び出せます。
##環境ごとに定数を設定する
urlやリンク先など、環境ごとに定数を変更したいときはconfig/settings
下に環境名.yml
を作成します。
開発環境であればconfig/settings/development.yml
、ローカル環境であればconfig/settings/localhost.yml
等になります。
書き方はsettings.yml
と同様ですが、環境ごとのファイルに定数を設定していきます。
#テスト環境
web_base_url: example.hoge.jp
#開発環境
web_base_url: http://dev.hoge.jp
コンソールで確認してみましょう。rails c 環境名
で環境ごとのコンソールに入れます(Rails 6からはできなくなるそうですが...)
#rails c testでテスト環境のコンソールに入りました
[1] pry(main)> Settings.web_base_url
=> "example.hoge.jp"
続いて開発環境へ。
#rails c developmentで開発環境のコンソールに入りました
[1] pry(main)> Settings.web_base_url
=> "http://dev.hoge.jp"
別々の定数が定義されていると確認できました!
##まとめ
・定数を定義する際はsettingsを使うと便利
・すべての環境で共通の定数はconfig/settings.yml
に。
・環境ごとに定数を設定したい場合はconfig/settings/環境名.yml
に。
phpも時々触るようになったのですが、config/config.php
、config/環境名/config.php
に定数が設定されていました。
間違っている点等あればご指摘いただけますと幸いです。