升级 Ruby 版本和 Rails 兼容性

Upgrading Ruby version And Rails Compatibility

大家好,我想知道是否有人可以解释我遇到的问题,以便我了解发生了什么。

我目前正在 运行ning ruby 2.2.2 和 rails 5。我有一个小型测试应用程序,一切正常。我决定将 ruby 升级到版本 2.4.0,没有其他原因,我认为我应该知道如何去做以及由此产生的陷阱等,所以这是一个学习练习。

在将 ruby 更新到 2.4.0 后正常运行命令 rails -v returns rails 未安装。如果我然后恢复到旧的 ruby 2.2.2 rvm use ruby-2.2.2 运行 rails -v 然后返回 rails 5.0.1。这里发生了什么事?

谢谢

RVM 为每个 Ruby 版本和 gem 集提供一个单独的 gem 目录。这意味着必须为每个修订和 gem 集显式安装 gems。通常迁移过程如下:

rvm use ruby-2.4.0 
# or `rvm --default use ruby-2.4.0` if you want to use 2.4.0 from now on
gem install rails -v 5.0.1 # an example, use any version you like
gem install bundler
bundle install # to install all other project gems

参见RVM gemsets documentation page

扩展@Slava.K 的回答

I have a small test app and all is working fine. I decided to upgrade ruby to version 2.4.0, for no other reason than I think I should know how to do it and the resulting pitfalls etc, so a learning exercise.

  • 当您将 ruby 升级到 2.4.0 时,这将成为您的新 ruby 版本 号,因此您不会参考 railsbundler.
  • 您需要执行 gem install rails -v x.x.xgem install bundler
  • 现在当您执行 rails -v 时,这将打印一个版本 给定 Ruby.
  • 的安装数量 rails

After updating ruby to 2.4.0 which goes fine the command rails -v returns rails not installed. If i then revert to the older ruby 2.2.2 rvm use ruby-2.2.2 run rails -v then rails 5.0.1 is returned. Whats happening here?

  • 正如我上面已经提到的,升级 Ruby 时必须安装 rails。所以没有安装 rails,没有要显示的版本号

  • gem env home => ../versions/jruby-1.7.12/lib/ruby/gems/shared
    • 将显示安装 gem 的位置。
  • 我更喜欢使用 rbenv 而不是 rvm