Bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby

Я новичок в Ruby и пытаюсь склонить голову к следующим концепциям: bundler vs RVM vs gems vs RubyGems vs gemsets vs system rub, и я запутался.

Может кто-нибудь описать "наилучшую практику" того, как я должен все это справиться при новой установке последней версии Ubuntu? Что я должен установить, и как я должен использовать все это?

Я предполагаю, что делать sudo apt-get install ruby не рекомендуется, но я не уверен. Я попробовал это в своей системе в дополнение к "всем другим материалам Ruby". Это просто добавляет к моей путанице. Я не говорю о Rails, но просто обычные рубиновые камни (например, Vagrant, Chef, скрипты).

Ответ 1

Как и в предыдущем ответе, это довольно много, поэтому рассмотрим это краткое введение.

гемы - это способ упаковки библиотек Ruby. Они для Ruby, как банки для Java. Внутри файла gem вы найдете код Ruby (файлы .rb), а также тесты и специальный файл, содержащий информацию о самом геме, такую как его имя, зависимости и версия (gemspec). Любой проект Ruby может определить нужные ему гемы через Gemfile, который просто должен объявить зависимости. Rubygems - это имя менеджера пакетов - инструмента, используемого для установки пакетов (тогда как гемами являются сами пакеты). Rubygems теперь является частью Ruby.

Bundler делает управление драгоценными камнями сносным. Основываясь на вашем Gemfile, простой вызов компоновщика с использованием пакета bundle загрузит и установит все необходимые гемы. Используя стандартную команду gem, вам нужно будет установить каждую из них вручную, используя gem install <gem_name>. Bundler не является частью Ruby (он сам по себе упакован как драгоценный камень), но он является "стандартом де-факто" для большинства приложений (вы не найдете много людей, не использующих его, и нет веских причин не использовать его на самом деле).

RVM - это инструмент, позволяющий устанавливать на компьютер несколько версий Ruby, переключаясь между ними при необходимости. Это можно использовать для установки как Ruby 1.8 и 1.9, так и даже "MRI" (Matz Ruby, реализация по умолчанию) и альтернатив (например, JRuby или Rubinius). Обратите внимание, что RVM не одинок в этом поле, смотрите, например, rbenv.

Gemset в RVM - это набор драгоценных камней, специфичных для данного контекста, обычно проекта. Это полезно, если вы, например, разрабатываете различные приложения, каждое из которых имеет свои наборы гемов, и хотите хранить их отдельно.

Система Ruby, при использовании RVM, является версией Ruby, установленной на машине (т.е. не через RVM).

Если вы только начинаете, вам интересны самоцветы и комплекты. Вы можете пока оставить RVM и гемсеты в стороне.

Ответ 2

Вы запрашиваете дополнительную информацию в одном вопросе, чем в области для. Чтобы покрыть все это, нужно взять книгу.

На Ubuntu легко установить и удалить драгоценные камни в "системную" версию Ruby, поэтому привыкнуть к установке и удалению обычных драгоценных камней через sudo. (В Mac OS я бы дал разные советы, потому что Apple объединила Ruby для собственного использования, и это не отличная идея, чтобы с ним поработать.) Затем, когда у вас есть идея, как работает вся идея драгоценного камня, и вы знаете, что хотите несколько Рубиновые версии вашей системы, попробуйте " rbenv" или " RVM" и установите версию или две в вашу песочницу.

Linux упрощает добавление/удаление Ruby через дистрибутив, но мы ограничены версиями, которые компоновщики дистрибутивов упаковали, поэтому я обычно устанавливаю их из источника. Но, что боль при управлении несколькими версиями Ruby для систем разработки, тестирования и производства, поэтому rbenv и RVM - они обрабатывают грязные детали, что позволяет нам сосредоточиться на программировании.

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

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