Bundler из Rails 3 может создать 5 наборов файлов или папок - их следует добавить в репозиторий проекта? - PullRequest
2 голосов
/ 10 сентября 2010

Я думаю, что 5 наборов файлов или папок, которые создает Bundler в Rails 3:

  1. Gemfile
  2. Gemfile.lock
  3. .bundle / конфигурации
  4. производитель / комплект
  5. производитель / кэш

Есть еще? Для каждого из них они должны быть добавлены в хранилище? Gemfile и Gemfile.lock, я так думаю, потому что это то, что позволяет всем использовать одну и ту же версию драгоценных камней. Для .bundle/config, я думаю, для разработки, мы, вероятно, должны добавить его, потому что он говорит: «Не используйте общие драгоценные камни» (я думаю, это означает системные драгоценные камни) ... и т. Д. Я прочитал один документ, который говорит, что это развертывание , затем используйте .gitignore, чтобы игнорировать этот файл, потому что он может отличаться на каждом компьютере развертывания (как?) ... так что это означает только на компьютере развертывания, используйте локальный .gitignore, чтобы игнорировать его во время разработки не игнорируй это?

А как насчет vendor/bundle файлов? Они могут содержать скомпилированные двоичные файлы, поэтому, если они будут добавлены в проект разработчиком Macbook, повлияет ли это на другого разработчика, использующего Linux? (Или когда проект клонируется на сервер развертывания, который использует Linux).

А как насчет vendor/cache? Он содержит все файлы .gem. Могут ли они содержать какие-либо двоичные файлы? Или они всегда для пользователя делают bundle install --local, и все они содержат только текстовые файлы, поэтому они будут генерировать соответствующие двоичные файлы, если таковые имеются, в каталоге gem, так что добавление этой папки в проект является необязательным, хотя если мы запустим bundle package для создания этой папки, возможно, что все будут создавать драгоценные камни, используя эту папку, а не вытаскивая ее из rubygems.org?

Ответы [ 2 ]

1 голос
/ 26 ноября 2010
  • Gemfile и Gemfile.lock должны быть частью вашего контроля версий. Это позволит другим разработчикам и вам самим легко установить необходимые драгоценные камни для вашего проекта в других системах.

  • .bundle / config должен быть разным для каждой машины и не должен входить в систему контроля версий.

  • vendor / bundle: не должно быть частью вашего контроля версий, поскольку для запуска вашего приложения необходимы его драгоценные камни. Как вы отметили в своем вопросе о бинарных файлах в папке. Они должны быть перекомпилированы для каждой системы, на которой они работают.

  • vendor / cache: не добавляйте это в систему контроля версий. Это кеш-файл, который можно использовать для быстрой установки отсутствующих драгоценных камней, если они уже присутствуют здесь.

Обратите внимание, что вы можете выбрать расположение каталогов bundle и cache, отредактировав .bundle / config, и тогда они не будут установлены в каталог вашего приложения, если вы не хотите их там.

1 голос
/ 26 ноября 2010

Да, Gemfile и Gemfile.lock должны находиться под контролем ревизии. Не уверен насчет остальных (у меня их нет в моей системе).

Gemfile указывает, какие гемы используются в вашем проекте (и, возможно, какие версии), тогда как Gemfile.lock указывает, какие версии вы используете в данный момент. Имея оба в Git, вы убедитесь, что все разработчики проектов используют одинаковые версии гемов, что предотвратит многие проблемы, такие как «это работает на моей машине, я не знаю, почему это не работает на вашей» (потому что 2 разработчики используют разные версии одного и того же камня, в которых могут быть ошибки).

...