Что предлагает Bundler поверх RVM? - PullRequest
7 голосов
/ 29 апреля 2011

Я не уверен, в чем различия между этими двумя инструментами.Кажется, есть большое совпадение, но я использую RVM и сталкиваюсь с некоторыми проблемами несовместимости.

Что делает Bundler, а RVM не делает?

Ответы [ 4 ]

11 голосов
/ 29 апреля 2011

Они служат разным целям.RVM создает «песочницу» для управления вашими установками Ruby.Как часть этого, он также позволяет вам определять наборы гемс.

Bundler не управляет вашими Ruby, он работает с выбранным в данный момент Ruby.

Итак, я думаю, вам следует рассмотреть RVM как менеджер конфигурации для вашей среды разработки, а Bundler - менеджер гемов для приложения.


РЕДАКТИРОВАТЬ: Дополнительные мысли -

Используем ли мы RVM или нет, обычно нам приходится вручную загружать все драгоценные камни, которые мы собираемся использовать для приложения, используя gem install blah, для каждого драгоценного камня, который мы хотим использовать.

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

Bundler, с другой стороны, заботится об этих недостающих частях в RVM.Когда вы создаете Gemfile для компоновщика, он извлекает необходимые гемы и конкретные версии, если они указаны.Таким образом, задача установки приложения Ruby на другой компьютер становится намного проще.Переместите файлы на другую машину, затем запустите bundle install, и все остальное будет сделано.

Он отлично работает с Rails и является разумным решением для моих производственных файлов.Это будет намного проще, чем то, как я должен обрабатывать дистрибутивы Perl, чтобы запускать приложения Perl на тех же хостах.

3 голосов
/ 29 апреля 2011

Чтобы прямо ответить на ваш вопрос ...

Что делает Bundler, а RVM не делает?

Bunlder установит все драгоценные камни, необходимые для проекта (который использует bundler, и все необходимые гемы указаны в Gemfile).RVM этого не делает.

Используя Gemfile, вы можете указать, какие группы гемов (например: разработка, тестирование) ...

Есть много «маленьких» вещей, подобных этим, которые выполняет упаковщик, ноRVM нет.В целом, как объяснили хорошие люди выше, RVM имеет другой набор целей, чем у упаковщика.RVM об управлении средами исполнения ruby, а bundler - об управлении зависимыми гемами для приложения.

3 голосов
/ 29 апреля 2011

RVM больше похож на единицу сдерживания. В то время как Bundler походит на манифест (менеджер зависимостей) того, что приложение потребует или использует в своем жизненном цикле (среди прочего).

Если вы работаете в Rails, вы не сможете выйти из Bundler. Но я использую его все время, просто чтобы знать, какие драгоценные камни мне понадобятся, как и другие, которые позже присоединятся к проекту.

RVM помогает мне разделить мои Ruby, а затем - на Ruby / проекты. Таким образом, у меня нет большого количества драгоценных камней и разных версий в одной куче.

Не совсем удачный ответ, но надеюсь, что он немного поможет.

2 голосов
/ 29 апреля 2011

Bundler - это инструмент для управления зависимостями в вашем коде, т. Е. Всеми гемами, которые ему требуются.Это гарантирует, что все гемы, указанные вами в вашем Gemfile, и все зависимости установлены в вашей системе.На самом деле не имеет значения, какую версию ruby ​​вы используете, она просто устанавливает для вас гемы в зависимости от того, какой интерпретатор используется.

RVM - это инструмент для запуска нескольких рубинов, и теоретически несколько наборов гемовЧто ж.Он вообще не обрабатывает зависимости для вас - вам все еще нужно установить гемы.

Мой опыт (и я новичок в RVM) заключается в том, что вы не хотите беспокоиться оRVM, если вам не нужно запускать несколько рубинов, или вам не нужны гемы для разных проектов, которые как-то конфликтуют друг с другомДаже если вы используете RVM, имеет смысл использовать Bundler для управления гем-зависимостями, чтобы ваш Gem-файл можно было отслеживать в любом хранилище кода, которое вы используете.

...