Ruby on rails Rails安装失败:activesupport需要Ruby版本>;=2.2.2

Ruby on rails Rails安装失败:activesupport需要Ruby版本>;=2.2.2,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想创建一个新的Rails应用程序。我将rvm与ruby-2.1.2一起使用。我正在使用@globalgemset,并计划使用bundler管理gem依赖项。但是,gem安装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%)

我想创建一个新的Rails应用程序。我将rvm与ruby-2.1.2一起使用。我正在使用
@global
gemset,并计划使用bundler管理gem依赖项。但是,
gem安装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,但实际上
@global
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时,如何防止发生此错误呢

gem install rails
上面的命令将使用最新版本的rails,即rails 5的稳定版本,该版本要求>=ruby 2.2.2

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

gem install rails --version 4.2.4

让我知道它是否有效。
谢谢。

您可以使用任何ruby版本的遗嘱,但是您不能将任何ruby版本与最新版本的Rails一起使用。 当您执行
gem安装rails
时,您得到的是最新的rails版本(rails 5),它与Ruby 2.1.2完全不兼容

如果您真的想使用Ruby 2.1.2,请尝试以下方法:
gem安装rails-v4.2.2


由于使用gemset,因为我喜欢这种非常有组织的方式,所以我从不使用global。我总是为每个项目创建一个新的gemset。这保证了我可以有很多项目,每个项目都有ruby和rails版本,而不会在gems之间产生任何不兼容。这是gemset作为Ruby on Rails工作区的一部分。如果您按项目将它们分开,您将最大限度地减少出现gem不兼容的异常情况的可能性。

我在CocoaPod前遇到了它,它通过以下方式修复:

  • sudogem安装activesupport-v4.2.6
  • sudogem安装cocoapod

  • 使用RVM对我很有效,我遵循了说明

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

    如果您使用的是rbenv

    请验证是否使用此rbenv医生脚本正确设置了rbenv:

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

    你的第一点回答了我的问题。然而,我不同意你的第二点。每次您创建一个新的gems集时,您都会有与每个项目相似的gems副本。bundler的全部目的是解决依赖性问题,并使用Gemfile加载正确的gem,这样就不会出现gem不兼容的奇怪情况。@Donato这不是我随机想到的。这不是我的愿望。您可以从最可靠的来源读取规范:“警告!”会话:“RVM为每个Ruby版本和gemset提供一个单独的gem目录。*这意味着必须为每个版本和gemset显式安装gems。RVM帮助您管理此过程;请参阅RVM集文档页面。”系统上不同项目的重复gems是免费的。灵活性和理智性更有价值。2020年不再有效,因为其他依赖项似乎需要ruby 2.5+
    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
    
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash