Этот вопрос очень широкий, поэтому я решил попытаться сбалансировать ясность с краткостью. Если кто-то найдет что-то не так с ответом, пожалуйста, скажите, и я прямо скажу:)
RVM - менеджер версий Ruby. Гипотетически, некоторые проекты могут требовать запуска ruby 1.9, другой устаревший проект может потребовать 1.8. RVM позволяет устанавливать обе установки параллельно, а не одну авторитетную версию ruby на уровне системы. Это облегчает установку более поздних версий ruby, не боясь что-либо сломать или вмешиваться в требования к версиям ruby других учетных записей пользователей (поскольку обычно в вашем домашнем каталоге устанавливается RVM на уровне пользователя). Это даже позволяет вам попробовать новейшую версию ruby, не беспокоясь о чем-либо, поскольку вы всегда можете легко переключиться обратно.
Когда вы устанавливаете гем, он, как правило, становится доступным для вас везде, где вам доступна установка ruby, как и в любом проекте. Когда вы указываете гемы в своем Gemfile, вы в основном говорите, что независимо от того, какие гемы вы могли установить и их версий, для этого проекта требуется гем x версии 2.2, y версии 3.1 и z версии 1.1 , Если у вас еще не было этих драгоценных камней, он их устанавливает, если у вас их нет, но они устанавливаются.
Path - это переменная среды , которая позволяет операционным системам знать, где искать программы при их вызове. Если вы наберете someapp в терминале, как операционная система может узнать, где находится someapp ? Ну, он ищет его в любом из этих каталогов, поставляемых в $ PATH. Вы можете увидеть, что находится на вашем пути, выполнив echo $PATH
в оболочке.
Что касается различных версий ruby, это возвращает меня к причине RVM. Вы можете, если хотите, установить версию ruby, которую они используют, а затем в своем Gemfile указать конкретную версию гемов, используемых в учебниках, и у вас все будет хорошо. Вы можете установить разные версии гемов, и вы можете установить разные версии ruby благодаря RVM.
Лично я бы рекомендовал работать над последней версией всего, чтобы она оставалась актуальной. Например, было бы контрпродуктивно работать над учебником, который использует Rails 2, так как он сильно изменился, когда перешел на 3, и несколько с 3 на 3.1 и выше и т. Д. Если возможно, используйте последние версии или, по крайней мере, знайте о нюансы (базовый материал имеет тенденцию оставаться более или менее неизменным), чтобы вы не работали над учебником, который старше, только чтобы приступить к работе над собственным проектом с последней версией всего и не заставить его работать.
Простое решение вашей дилеммы: отбросьте слишком старые учебники. Существует множество ресурсов, которые вы обязательно найдете в актуальном состоянии. В худшем случае датированный материал обычно имеет поддержку сообщества в виде комментариев, в которых говорится об изменениях между датированной версией чего-либо и соответствующей последней версией. Например. «имейте в виду, что хаха. что изменилось на lol.wut в версии 3.1»