はじめに
課題着手当時は「こうしないといけないものだから、こうするんだ」で終わっていたものもおおく、改めて課題を振り返ってみることでなぜこのコードが必要なのか、少しずつ理解。ちゃんと読めていない部分もあり。恥ずかしい限りです。
では早速今回の内容を見ていきましょう。
環境
- Windows, WSL
- Docker
- Ruby 3.2.3
- Rails 7.1.3
gem 'config'を導入したあと.gitignoreについて
パスワードリセット機能を実装するために最後の段階でgem 'config'
を導入したあと.gitignore
を以下のように編集する過程がありました。なぜでしょうか?
config/settings.local.yml
config/settings/*.local.yml
config/environments/*.local.yml
解答
.gitignore
ファイルに次のような設定を追加する理由は、開発環境や特定のローカル設定をバージョン管理システム(Git)に含めないようにするためです。
1. config/settings.local.yml
- 目的: このファイルは、特定のローカル環境でのみ有効な設定を記述するために使用されます。たとえば、開発者がそれぞれ異なるAPIキーやデータベース設定を持っている場合、その設定をこのファイルに記述します。
- 理由: 開発者ごとの設定を共有する必要はなく、他の開発者の環境に影響を与えないため、このファイルはGitにコミットしません。
2. config/settings/*.local.yml
-
目的:
.local.yml
という形式で、環境ごとのローカル設定ファイルを追加できます。例えば、development.local.yml
やproduction.local.yml
といったファイルを作成し、それぞれの環境で特定の設定を行います。 - 理由: 環境に依存したローカル設定は個々の開発者やサーバーの環境に合わせて異なることが多く、これらのファイルも共有する必要はありません。設定を共有すると、他の環境で動作しない可能性があります。
3. config/environments/*.local.yml
- 目的: 環境ごとの設定ファイルに加えて、特定のローカル環境でのオーバーライドを行いたい場合に使用します。これにより、環境ごとの設定をさらにローカルレベルで細かく制御できます。
- 理由: 他の開発者や本番環境に影響を与えないようにするため、ローカルの環境設定はGitに含めません。
つまりはこういうこと
gem 'config'
を使用する場合、ローカル設定や特定の環境に依存する設定はGitで共有しない方が安全です。これにより、他の開発者やデプロイ先での動作に悪影響を与えることなく、自分の開発環境で必要な設定を自由にカスタマイズできます。そのため、これらの .local.yml
ファイルを .gitignore
に追加して、バージョン管理から除外します。
ついでにgem 'config'について
gem 'config'とは、Railsアプリケーションで設定管理を簡単に行うためのgemです。
環境ごとに異なる設定を一元管理することができ、開発環境、テスト環境、本番環境で異なる設定値を使いたい場合に非常に便利です。config/settings.ymlファイル に共通の設定を書き、config/settings/development.yml、config/settings/production.yml、config/settings/test.yml に環境ごとの設定を書き分けます。
さいごに
外部から丸見え状態にしない為、悪用されないようにするために.gitignore
が必要。うっかり設定を忘れないようにしないと悲惨なことになると容易に想像ができてしまう。怖いですね。
今回の記事が何か参考になれば幸いです。