Rails Diary

プログラミングの学習記録です。

gem: configについて

★gem: configを使うことで便利に定数管理ができる!

  • 環境ごとに異なる定数を管理するため
  • 設定値をconfigフォルダ以下に一元管理することでメンテナンスが楽になる
  • 環境ごとに値が変わらない場合は一つ上の階層のconfig/settings.ymlファイルに記述すると良い
gem 'config'
bundle install --path vendor/bundle
$ bundle exec rails g config:install
Running via Spring preloader in process 2577
      create  config/initializers/config.rb
      create  config/settings.yml
      create  config/settings.local.yml
      create  config/settings
      create  config/settings/development.yml
      create  config/settings/production.yml
      create  config/settings/test.yml
      append  .gitignore

f:id:okmt_Aya_26:20220228221352p:plain
各ファイルの役割

.gitignoreに自動で追加されるファイル

config/settings.local.yml config/settings/.local.yml config/environments/.local.yml

基本的にはconfig/settings.yml(全ての環境で利用する定数を定義)に記載する 環境ごとに定数を定義する場合はそれぞれのファイルへ .gitignoreに追加されているsetting.local.ymlには共有したくないものを記載する

共有したくないものって一体なんだろう?🤔

使い方例

  • 環境ごとにhost情報を分けたい時など便利
# config/settings/development.yml

host: 'localhost:3000'
# config/environments/development.rb

config.action_mailer.delivery_method = :letter_opener_web
config.action_mailer.default_url_options = { host: Settings.host }

翻訳の呼び出しと似ていると思った。
各環境ごとに設定されたsettings配下のファイルの設定された定数hostが適用される的なことだと思う。

本番環境にデプロイする際は、config/settings/production.ymlに取得したドメイン名を設定する。

★デプロイ(deploy)…(兵士などを)配備する、展開する

≒作ったプログラムを然るべき場所に置き、あれこれ設定して使える状態にすること

みなさんがプログラムを作る目的は、プログラムを作ることではありません。プログラムを動かすことです。つまり、プログラムが完成した時点では、まだ途中なのです。完成したプログラムがお仕事できる状態になって、はじめて作業完了です。 この、完成したプログラムを動かせる状態にするのが(システム開発の話で出てくる)デプロイです。 https://wa3.i-3-i.info/word16767.html

参考にしたサイト

Rails 定数を管理するsettings.yml・環境ごとの定数管理の方法 - Qiita

【Rails】「config」gemを使って定数管理をおこなう方法 | vdeep

gem configを理解する ~ configを使った定数管理の方法 - Qiita

【Ruby on Rails】 gem を使わないで環境毎に定数管理をする - きゃまなかのブログ