Ruby と Rails の .gitignore 設定

Ruby および Rails プロジェクト向けの完全な .gitignore。bundle ディレクトリ、gem ファイル、tmp ディレクトリ、データベースファイル、Rails 認証情報管理を網羅します。

Language

詳細な説明

Ruby プロジェクト、特に Ruby on Rails アプリケーションは、バージョン管理から除外すべきさまざまなファイルを生成します。.gitignore は Bundler アーティファクト、Rails 固有のファイル、ランタイムデータをカバーする必要があります。

Bundler と gem パターン:

  • vendor/bundle/bundle install --deploymentbundle install --path vendor/bundle を実行するとローカルに gem がインストールされます。このディレクトリは node_modules/ のように振る舞い、コミットすべきではありません。
  • *.gem — ビルド済み gem パッケージ。gem を開発している場合、.gem ファイルは配布用アーティファクトであり、ソースコードではありません。
  • .bundle/ — プロジェクトごとの設定を含む Bundler 設定キャッシュ。

Rails 固有のパターン:

  • tmp/ — Rails がキャッシュファイル、セッションデータ、PID、ソケットファイルを保存します。tmp/ 内のすべては一時的です。
  • log/ — アプリケーションログファイル(development.logproduction.logtest.log)。継続的に増大し、マシン固有です。
  • db/*.sqlite3db/*.sqlite3-* — 開発で使用される SQLite データベースファイル。本番データベースはリポジトリに含めるべきではありません。
  • storage/ — Active Storage のローカルディスクサービスでアップロードされたファイル(Rails 5.2+)。
  • public/assets/ — プリコンパイル済みアセットパイプライン出力。rails assets:precompile で生成され、CI でビルドすべきです。
  • public/packs/ — Webpacker 出力ディレクトリ(Rails 5.1 から 6.x)。
  • node_modules/ — Webpacker、Importmap、または jsbundling-rails で JavaScript バンドルを使用する場合。

認証情報の扱い:

Rails 5.2+ は暗号化された認証情報config/credentials.yml.enc)を使用し、これはコミットします。マスターキー(config/master.key)が無視すべきものです:

config/master.key
config/credentials/*.key

暗号化されたファイルはキーなしでは無意味なため、コミットしても安全です。マスターキーはパスワードマネージャーなどの安全なチャネルで共有してください。git では決して共有しないでください。

コミットすべきもの: GemfileGemfile.lock(アプリケーションでは常に)、config/credentials.yml.enc.ruby-version、一貫したリンティングのための .rubocop.yml

Spring プリローダー: Spring プロセス ID ファイルがコミットされるのを防ぐために spring/*.pid を無視してください。Spring は起動時間を短縮するためにバックグラウンドでプロセスを維持する Rails アプリケーションプリローダーです。

ユースケース

アセットパイプラインから jsbundling-rails に移行する Rails チームが、レガシーのコンパイル済みアセットと新しい JavaScript ビルド出力の両方を処理するために .gitignore を更新する必要があります。

試してみる — .gitignore Generator

フルツールを開く