Ошибка установки Rails: для activesupport требуется версия Ruby >= 2.2.2

Я хочу создать новое приложение Rails. Я использую rvm с ruby-2.1.2. Я использую gemset @global и планирую использовать bundler для управления зависимостями gem. Однако gem install rails выходит из строя:

$ gem install rails
Fetching: concurrent-ruby-1.0.3.pre3.gem (100%)
Successfully installed concurrent-ruby-1.0.3.pre3
Fetching: minitest-5.9.0.gem (100%)
Successfully installed minitest-5.9.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: activesupport-5.0.0.gem (100%)
ERROR:  Error installing rails:
    activesupport requires Ruby version >= 2.2.2.

Да, это правда, я использую ruby-2.1.2, а не ruby-2.2.2, но разве мне не разрешено использовать ruby-2.1.2? Не разрешено ли нам больше использовать ruby-2.1.2?

Я подумал, что, возможно, ActiveSupport 5 уже был установлен в @global gemset и что для ActiveSupport 5 требуется 2.2.2, но на самом деле нет ActiveSupport 5 в @global gemset:

$ rvm gemdir
/Users/myuser/.rvm/gems/[email protected]
$ cd /Users/myuser/.rvm/gems/[email protected]
$ cd gems
$ ls
bundler-unload-1.0.2        gem-wrappers-1.2.4      rake-10.1.0         rvm-1.11.3.9            tzinfo-1.2.2
concurrent-ruby-1.0.3.pre3  i18n-0.7.0          rdoc-4.1.0          test-unit-2.1.2.0
executable-hooks-1.3.2      minitest-5.9.0          rubygems-bundler-1.4.4      thread_safe-0.3.5

Итак, как я могу предотвратить эту ошибку при попытке использовать ruby-2.1.2?

Ответы

Ответ 1

Вам разрешено использовать любую рубиновую версию, но вы не можете использовать рубиновую версию с последней версией Rails. Когда вы делаете gem install rails, вы получаете последнюю версию Rails (Rails 5), которая вообще не совместима с Ruby 2.1.2.

Если вы действительно хотите использовать Ruby 2.1.2, попробуйте следующее: gem install rails -v 4.2.2.

Как использование gemset, так как мне нравится это довольно организованное, я никогда не использую глобальный. Я всегда создаю новый гемсет для каждого проекта. Это гарантирует, что у меня может быть много проектов, каждый из которых имеет версию ruby ​​и rails, не получая никакой несовместимости между драгоценными камнями. Это из gemset в качестве рабочего пространства Ruby on Rails. Если вы отделите их по проекту, вы минимизируете вероятность странностей с несовместимостью драгоценного камня.

Ответ 2

gem install rails

Выше команда будет использовать последнюю версию рельсов, которая является стабильной версией Rails 5, для которой требуется >= ruby ​​2.2.2.

Мы можем использовать 2.1.2 с более низкой версией Rails. Пожалуйста, укажите версию во время установки рельсов, которые могут решить вашу проблему, например:

gem install rails --version 4.2.4 OR
gem install rails -v 4.2.4

Сообщите мне, если это сработает. Спасибо.

Ответ 4

Используя RVM, я работал с инструкциями здесь

curl -sSL https://rvm.io/mpapis.asc | gpg --import - &&\
curl -L get.rvm.io | bash -s stable &&\
source /etc/profile.d/rvm.sh && /usr/local/rvm/bin/rvm reload &&\
/usr/local/rvm/bin/rvm requirements run &&\
/usr/local/rvm/bin/rvm install 2.2.4 &&\
/usr/local/rvm/bin/rvm use 2.2.4 --default && ruby --version

Моя среда была контейнером Docker с установленным CentOS

Ответ 5

Если вы используете rbenv

Убедитесь, что rbenv правильно настроен с помощью этого rbenv-doctor script:

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash