Rails安装失败:activesupport需要Ruby版本>= 2.2.2。

26

我想创建一个新的Rails应用程序。我使用ruby-2.1.2和rvm。我正在使用@global gemset,并计划使用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已经安装在全局的gemset中,而ActiveSupport 5需要2.2.2,但实际上在全局的gemset中没有ActiveSupport 5:

$ rvm gemdir
/Users/myuser/.rvm/gems/ruby-2.1.2@global
$ cd /Users/myuser/.rvm/gems/ruby-2.1.2@global
$ 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时出现这个错误?

6个回答

42

您可以使用任何版本的Ruby,但不能与最新版本的Rails一起使用。

当您执行gem install rails时,您将获得最新版本的Rails(Rails 5),它与Ruby 2.1.2完全不兼容。

如果您确实想使用Ruby 2.1.2,请尝试这样做:gem install rails -v 4.2.2。您可以在此处找到ruby和rails版本的兼容性,并在此处找到可能的rails版本。

关于gemset的使用,由于我喜欢整洁有序,我从不使用全局gemset。我总是为每个项目创建一个新的gemset。这确保我可以拥有许多项目,每个项目都有不同的ruby和rails版本,而不会出现任何gem不兼容问题。将其视为Ruby on Rails工作区。如果您将它们按项目分开,就可以最大程度地减少gem不兼容问题的发生。


你的第一点回答了我的问题。然而,我不同意你的第二点。每次创建新的gemset时,你都会为每个项目拥有相似的重复gem副本。Bundler的整个目的是解决依赖关系问题并使用Gemfile加载正确的gems,因此gem不兼容的奇怪情况永远不会发生。 - Daniel Viglione
3
@Donato,这不是我随意想出来的,并且这也不是我的意愿。您可以从最可信的来源https://rvm.io/gemsets/basics阅读规格说明。从“警告!”部分开始: "RVM为每个Ruby版本和gemset提供单独的gem目录。* 这意味着必须为每个修订版和gemset显式安装宝石。 RVM帮助您管理此过程;请参见RVM设置文档页面。" - GPrimola
1
在您的系统上为不同项目复制宝石是免费的。灵活性和理智则更加有价值。 - David Hempy
因为其他依赖项需要 Ruby 2.5+,所以该程序在2020年已经无法使用。 - Warren P
您可以在此处找到Ruby和Rails版本的兼容性:https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html 以及可能的Rails版本:https://rubygems.org/gems/rails/versions - Marcelo Xavier

8
gem install rails

上述命令将使用最新版本的Rails,即Rails 5稳定版,需要>= ruby 2.2.2。

我们可以在低版本的Rails中使用2.1.2。在安装Rails时指定版本可能会解决您的问题。例如:

gem install rails --version 4.2.4

或者

gem install rails -v 4.2.4

请告诉我它是否有效。 谢谢。


1

1

使用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

我的环境是一个安装了CentOS的Docker容器


0

Rails版本应与已安装的Ruby版本兼容。当您执行gem install rails时,您将获得最新的Rails版本(Rails 5),它根本不兼容Ruby 2.1.2。

如果您真的想使用Ruby 2.1.2,请尝试这样做:gem install rails -v 4.2.2。您可以在此处找到ruby和rails版本的兼容性以及可能的rails版本此处


0
如果您正在使用 rbenv
请使用此 rbenv-doctor 脚本验证 rbenv 是否已正确设置:
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接