Подтвердить что ты не робот

Как настроить Gemfile для каждого разработчика?

Существует общий шаблон:

существует много разработчиков, работающих над одним проектом, а Gemfile (.lock) используется совместно с SCM. Но что делать, если некоторые разработчики хотят использовать разные инструменты для тестирования и разработки? Как это сделать?

Проблема заключается в том, что, когда вы помещаете условные разделы в свой Gemfile, также Gemfile.lock будет отличаться для каждого разработчика, и поэтому вы будете сталкиваться при каждом конфликте с SCM.

Есть ли какое-то простое, широко признанное решение?

4b9b3361

Ответ 2

Мне нравится иметь это в моем Gemfile:

local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.file?(local_gemfile)
  require local_gemfile
end

У меня также есть Gemfile.local и Gemfile.lock в gitignore. Я знаю, что я не "должен", но я не думаю, что оговорки (например, те, о которых вы упоминаете в своем вопросе) того стоят.

ОБНОВЛЕНИЕ для Bundler 1.0.10 от 3 марта 2011 г.

local_gemfile = File.dirname(__FILE__) + "/Gemfile.local.rb"
if File.file?(local_gemfile)
  self.instance_eval(Bundler.read_file(local_gemfile))
end

Мне пришлось использовать это с Rails 3 и Bundler 1.0.10.

Ответ 3

Если вы проверите что-то, что зависит от драгоценного камня, который должен быть в gemfile. Если код в репозитории не зависит от драгоценного камня, его нет в gemfile. Таким образом, если ваши разработчики не будут проверять свои тесты (что было бы странно), вам понадобятся все тестовые зависимости, если вы хотите запустить весь набор тестов в любом случае.

Если камни не нужны для запуска приложения или его тестов, камни не обязательно должны быть в gemfile. Просто каждый разработчик создает gemset (я предполагаю, что вы используете RVM, если не хотите) для приложения, и установите там, где они там нужны, а затем просто добавьте приложение, которое нужно запустить в gemfile.

Ответ 4

Вы можете использовать флаг Bundler without для исключения групп.

Если у вас есть следующий Gemfile

group :jakubs_testing_tools do
  gem "rspec"
  gem "faker"
end

Вы можете исключить их с помощью bundle install

$ bundle install --without jakubs_testing_tools

http://gembundler.com/groups.html

Ответ 5

Это не поможет вам прямо сейчас, но есть открытый запрос функции для Bundler для добавления поддержки для Gemfile.local для возрастов, Это планируется где-то в серии 1.x, поэтому следите за обновлениями.

Если ваша основная проблема связана с конкретными разработчиками камней IRB, есть несколько обходных путей в проблеме комментарии.

Ответ 6

Каждый разработчик может создать свою собственную ветку - Bundler отлично работает с разными ветвями, имеющими разное содержимое Gemfile. Это хорошая идея для разработчиков префиксные имена ветвей с их инициалами, чтобы избежать путаницы или коллизий.

Ответ 7

(в основном та же идея, что и в августе Lilleaas comment: gitignore)

Поместите стандартный/минимальный Gemfile в SCM, а затем разработчики измените его на своих системах и никогда не совершаете. Попросите их добавить их в свой неактивный набор изменений в своем SVN-клиенте (если они его используют), другие SCM должны иметь что-то подобное.

Так мы делаем это в своей компании - отлично работает:)