2011-01-14 2 views
39

Я просто не понимаю. Я думал: Bundler был разработан для решения проблемы конфликтов между драгоценными камнями. Так что мне просто нужно require "bundler/setup" и все в порядке, зная, что Bundler загрузит правильные версии всех моих драгоценных камней и их зависимостей. Теперь, RVM отлично подходит для управления несколькими рубинами, я знаю, но почему я должен заботиться о функции Gemset? Мне что-то не хватает? Может ли это сделать мое развитие еще проще? Возможно, некоторые из вас могут дать мне несколько советов о совершенном RVM + Bundler рабочий процесс для обоих, разработка и производство.Почему я должен заботиться о функции Gemset RVM, когда я использую Bundler?

Я также не знаю, когда RVM начинает переход на другой Ruby. Я знаю, что у меня может быть файл .rvmrc в моем проекте, но мне нужно, чтобы cd в этот каталог, чтобы произошел переход?

Кроме того, я обычно использую Passenger для развития, так как, благодаря Passenger.prefpane, интеграция в Mac OS велик. Могу ли я сделать это с помощью RVM или есть лучший способ сделать это? Пассажир распознает .rvmrc файлы и переключается на правильный Gemset?

+2

Да, rvm переопределяет cd как функцию оболочки, которая проверяет файлы .rvmrc при смене каталогов. – Sam

ответ

20

Почему я должен заботиться о функции Gemset RVM, когда я использую Bundler?

Вы не должны.

Ну, если вы хотите , вы можете заботиться о, конечно, так что я должен лучше сказать: «Вам не нужно.»

Я только что слушал podcast interview with one of the Bundler core team members, который в основном сказал, что с тех пор, как он начал использовать Bundler, он прекратил использовать Gemsets, потому что они избыточны.

Here's a blog post that discusses the same issue, with some examples.

+2

Однако в настоящий момент RVM и комплект не работают хорошо вместе. Подробнее см. Http://beginrescueend.com/integration/bundler/. Пока я использую gemsets, чтобы избежать ошибок сегментации при переключении рубиновых версий на разные проекты, которые делят драгоценные камни. – foz

6

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

Пассажир не знает .rvmrc, насколько мне известно. Насколько мне известно, вы не можете запускать разные проекты у пассажиров под разными рубинами. Моя настройка рельсов по умолчанию имеет только bundler и rake в глобальном gemset. Я позволил поставщику взять на себя оттуда и управлять остальной частью проекта драгоценных камней, как вы описываете. Работает очень хорошо.

+0

Означает ли это, что у вас есть независимый гемсет для каждого из ваших проектов? Я имею в виду, что вы говорите о своей «настройке по умолчанию». В какой-то момент эта настройка, вероятно, эволюционирует до состояния, в котором он специфичен для проекта. К тому времени у вас есть пользовательский гемсет?Как вы запускаете свои приложения на своей машине разработки? – t6d

+0

Да, у меня есть независимые gemset для всех моих проектов без рельсов и один набор gemset для рельсов (который содержит только связки). Все требования к камню для проекта rails, я позволяю обработчику связки - например, 'bundle exec rails server' или' bundle exec rake'. Итак, мои Gemfiles развиваются по мере развития проектов рельсов, но «рельс-гемсет» этого не делает. – anshul

1

Вы определенно должны использовать gemsets, если вы когда-либо предвидим изменить Bundler версию. И вы можете использовать gemsets для управления драгоценными камнями, которые не имеют особого значения для вашего приложения Rails (wirble и т. Д.).

Смежные вопросы