github/gitignore · Rails.gitignore

Разбор шаблона .gitignore для Ruby on Rails

Почему Rails.gitignore игнорирует log, tmp, storage, SQLite для разработки, master.key, предкомпилированные ассеты и node_modules, и как устроены отрицающие шаблоны для .keep.

Открыть в генераторе Открыть вместе с Ruby, Node, macOS

Rails.gitignore блокирует файлы, которые появляются во время работы приложения Rails, и секретные данные. Основные цели — данные, накапливающиеся при работе сервера (логи, временные и загруженные файлы), и результаты конвейера ассетов.

Трижды встречается шаблон вида /log/* и !/log/.keep, который исключает только содержимое папки, но оставляет пустой файл-метку. git не хранит пустые каталоги, поэтому для сохранения структуры папок нужен такой способ.

Разбор правил

ШаблонЧто и почему игнорируется
/log/*/tmp/*/storage/*!/log/.keep!/tmp/.keep!/storage/.keepПапки логов, временных файлов и хранилищаПапки, где накапливаются журналы работы, кэш и pid-файлы, локальные загрузки Active Storage. Содержимое исключается, а файл .keep возвращается, чтобы папка осталась в репозитории. Если исключить сам каталог, как в /log/, вернуть .keep не получится.
config/master.keyconfig/initializers/secret_token.rb.env.env*.localСекретный ключconfig/master.key — ключ, открывающий зашифрованный credentials.yml.enc. При его утечке раскрываются все учётные данные, поэтому его никогда не коммитят. Сам зашифрованный файл credentials коммитить можно.
/db/*.sqlite3/db/*.sqlite3-journal/db/*.sqlite3-[0-9]*Базы данных для разработкиФайлы SQLite для разработки и тестов. db/schema.rb и миграции коммитят, а файлы данных каждый создаёт у себя.
/public/assets/public/packs/public/packs-test/public/system/public/uploadsПредкомпилированные ассеты и пакетыРезультаты assets:precompile и Webpacker, а также загруженные файлы. Они создаются заново в процессе развёртывания.
/.bundle/vendor/bundlenode_modules//vendor/assets/bower_components/yarn-error.log.yarn-integrityЗависимости Bundler и Nodegem и пакеты JavaScript, которые снова появляются после установки, и журналы установки.
/coverage//spec/tmpcapybara-*.htmlrerun.txtpickle-email-*.html.rspecПобочные файлы тестовРезультаты покрытия, страницы, которые Capybara сохраняет при сбое, списки для повторного запуска Cucumber. .rspec считается личным файлом параметров RSpec.
.byebug_history.rvmrc.powenv*.rbc*.origЛичные настройки инструментовИстория отладчика, старые настройки RVM и Pow, резервные копии оригиналов, оставленные инструментами слияния.

На что обратить внимание на практике

Исходный шаблон

Rails.gitignoreСтрок правил: 38
*.rbccapybara-*.html.rspec/db/*.sqlite3/db/*.sqlite3-journal/db/*.sqlite3-[0-9]*/public/system/coverage//spec/tmp*.origrerun.txtpickle-email-*.html# Ignore all logfiles and tempfiles./log/*/tmp/*!/log/.keep!/tmp/.keep# TODO Comment out this rule if you are OK with secrets being uploaded to the repoconfig/initializers/secret_token.rbconfig/master.key# Only include if you have production secrets in this file, which is no longer a Rails default# config/secrets.yml# dotenv, dotenv-rails# TODO Comment out these rules if environment variables can be committed.env.env*.local## Environment normalization:/.bundle/vendor/bundle# these should all be checked in to normalize the environment:# Gemfile.lock, .ruby-version, .ruby-gemset# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:.rvmrc# if using bower-rails ignore default bower_components path bower.json files/vendor/assets/bower_components*.bowerrcbower.json# Ignore pow environment settings.powenv# Ignore Byebug command history file..byebug_history# Ignore node_modulesnode_modules/# Ignore precompiled javascript packs/public/packs/public/packs-test/public/assets# Ignore yarn files/yarn-error.logyarn-debug.log*.yarn-integrity# Ignore uploaded files in development/storage/*!/storage/.keep/public/uploads

Источник шаблонов: github/gitignore/Rails.gitignore @356fd7b (2026-09-11) · CC0-1.0

Шаблоны, используемые вместе

Разборы других шаблонов