Ruby on rails 如何将已经下载的Rails gem链接到新版本的Ruby?

Ruby on rails 如何将已经下载的Rails gem链接到新版本的Ruby?,ruby-on-rails,ruby,rvm,environment,Ruby On Rails,Ruby,Rvm,Environment,我没有清楚地理解这个角色;RVM、RubyGems、Gemsets、Homebrew和Bundler,它们如何相互作用,以及我应该如何使用它们来管理我的环境、不同的应用程序、不同的Ruby版本、不同的Rails版本以及所有东西各自的依赖关系 我一直很高兴使用Ruby 2.3和rails 5.0.3为最新的应用程序和其他一些应用程序的旧版本编写代码,但幸运的是,到目前为止,更多的应用程序没有出现任何环境问题。我正要开始使用Rails 5进行敏捷Web开发,我正在尝试设置与教程相匹配的环境。这使我需

我没有清楚地理解这个角色;RVM、RubyGems、Gemsets、Homebrew和Bundler,它们如何相互作用,以及我应该如何使用它们来管理我的环境、不同的应用程序、不同的Ruby版本、不同的Rails版本以及所有东西各自的依赖关系

我一直很高兴使用Ruby 2.3和rails 5.0.3为最新的应用程序和其他一些应用程序的旧版本编写代码,但幸运的是,到目前为止,更多的应用程序没有出现任何环境问题。我正要开始使用Rails 5进行敏捷Web开发,我正在尝试设置与教程相匹配的环境。这使我需要更好地理解RVM&Gemsets、RubyGems、Bundler、Homebrew,以便现在可以在我的机器上管理不同的Ruby和Rails版本

第一步是通过成功安装的
rvm install Ruby-2.4.2
更新我的Ruby版本,该版本是2.3.0

这让我意识到,尽管我的机器上有各种Rails版本,“链接”到Ruby的旧版本,但我没有任何Rails版本“链接”到我的新Ruby v2.4.2

问题1)对于这个新的Ruby v2.4.2,我当然不需要下载我想要的Rails版本的另一个副本?我能不能将以前安装的Rails版本“链接”到这个新的Ruby v2.4.2

以下是
rvm gemset列表\u all
给出的内容

gemsets for ruby-2.2.2 (found in /Users/jamesbkemp/.rvm/gems/ruby-2.2.2)
=> (default)
   global

gemsets for ruby-2.3.0 (found in /Users/jamesbkemp/.rvm/gems/ruby-2.3.0)
=> (default)
   global

gemsets for ruby-2.4.2 (found in /Users/jamesbkemp/.rvm/gems/ruby-2.4.2)
=> (default)
   global
问题2)RVM的“宝石”与Bundler的功能相同吗?我只使用一个还是另一个?在我的例子中,我一直在使用Bundler,所以如果是非此即彼的情况,我宁愿坚持使用它

问题3)为了更好地理解这些环境管理工具,有谁能给我一个关于我应该使用RVM&Gemsets、HomeBrew&Bundler做什么的高层次概述,特别是哪些应该用来更新每个工具之间的界限以及在何处


谢谢。

我使用rvm的工作流程如下
1-我使用
$rvm install 2.3.1安装ruby版本
2-选择ruby版本
$rvm use 2.3.1

3-现在我创建了一个gemset,用于将gem版本封装在gemset中,避免与其他应用程序的版本冲突,因此
$rvm gemset创建我的应用程序

4-现在我选择gemset
$rvm use 2.3。1@my_app

5-安装Rails版本
$gem安装Rails-v5.0.3

6-创建应用程序,
$rails新建我的应用程序

现在,您的rails和gems已安装在
my_app
gemset上。
7-最后,我在应用程序中明确了ruby版本和gemset所使用的,在my_应用程序根路径中添加了一个包含
2.3.1
的.ruby版本文件和一个包含
my_应用程序
的.ruby gemset文件,因此当我输入my_应用程序根路径时,rvm知道它必须自动更改为
2.3。1@my_app
gemset,您无需键入
$rvm use 2.3。1@my_app
每次

回答你的第一个问题,也许你已经安装了rails,但是只在一个ruby全局gemset中安装了一个全局默认的gemset,所以如果你安装了一个新的ruby版本,你必须在其中再次安装rails gem。我建议为每个应用程序创建一个gems集,因为如果您有不同的应用程序,可以减少gems冲突问题