我想我已经陷入了一些混乱,我想要清理它的一些指示。 我安装了RVM和Ruby 2.2.3(这是唯一的版本):
rvm list
rvm rubies
=* ruby-2.2.3 [ x86_64 ]
# => - current
# =* - current && default
# * - default
我只有基本的宝石集:
rvm gemset list
gemsets for ruby-2.2.3 (found in /Users/Andrew/.rvm/gems/ruby-2.2.3)
=> (default)
global
如果我查看剪切的目录结构,我有:
~/.rvm/gems/ruby-2.2.3
~/.rvm/gems/ruby-2.2.3@global
如果我运行gem env,我的路径是:
[..snip..]
- GEM PATHS:
- /Users/Andrew/.rvm/gems/ruby-2.2.3
- /Users/Andrew/.rvm/gems/ruby-2.2.3@global
[..snip..]
- SHELL PATH:
- /Users/Andrew/.rvm/gems/ruby-2.2.3/bin
- /Users/Andrew/.rvm/gems/ruby-2.2.3@global/bin
[..snip..]
据我所知,ruby-2.2.3中的宝石是最新的,但ruby-2.2.3 @globabl中的宝石不是。
在IntelliJ IDEA中,我引用了针对ruby-2.2.3和ruby-2.2.3 [Global]的SDK。在Global gems目录中,它列出了ruby-2.2.3 [global]的gem,我可以将其中一些版本与ruby-2.2.3的gems版本不同。
我通过谷歌进行了很多研究,但我仍然对如何获得ruby-2.2.3@globabl中的宝石进行了升级以及是否需要。我无法分辨这些宝石和宝石集之间的关系,默认情况下这些宝石是空的,全局列出了大约4个宝石。
我想我可以做宝石干净以摆脱旧的宝石版本(但我已经阅读了许多危险的地方),但这不会升级ruby-2.2.3@global。我也担心它可能搞砸了我的IntelliJ Idea环境,我也在努力让我的头脑无处可去!
我想做的是:
我还没有找到一个简单的noob指南。也许最简单的事情是rvm内爆并重新开始?我正在尝试学习ruby,ruby on rails,rspec。
答案 0 :(得分:2)
Rvm有一个global
宝石集。这个gemset允许你安装宝石,这些宝石对于你在rvm中安装的给定版本的ruby所创建的gemset可以使用。
例如,您已安装ruby-2.2.3
,并且您已创建以下gemsets。 project1
,project2
。两个项目都使用bundler
,而不是拥有2个副本,您可以将其安装在@global
gemset中(参见https://rvm.io/gemsets/global/)
rvm @global do gem install bundler
更新你可以做的宝石
rvm @global do gem update
或查看哪些宝石
rvm @global do gem list
现在,如果您创建gemset project3
,则已经为您安装了bundler gem。
如果你安装了一个不同的红宝石说1.8.7
,那么这个全局中的所有宝石都不可用,因为它们只是2.2.3
的全局宝石。
如果您想在所有红宝石中安装某些宝石,可以查看初始化文件。这些文件位于~/.rvm
,由global.gems
和default.gems
组成。 (见https://rvm.io/gemsets/initial)。
安装新ruby时将安装~/.rvm/global.gems
中的宝石,并用于填充该红宝石的global
宝石集。 ~/.rvm/default.gems
是相同的,除了它们将进入rvm创建的默认/空白gemset。该页面底部的警告应该是默认情况下,当您升级rvm时它们会被覆盖。
Bundler是一个完全不同的野兽,并且在rvm拥有gemsets之后出现,它解决了类似的问题。在捆绑器(和gemsets)之前很容易遇到依赖地狱。如果一个项目使用了gem的x版本,而另一个使用了y版本,那么你需要安装两个,但是哪一个被激活,等等总是会引起问题。因此,当rvm出现时,您可以创建gemsets以保持每个项目宝石彼此分离。然后捆绑者进入了exisitance,让你使用Gemfile
做大致相同的事情。因此,如果您的所有项目都在使用bundler,那么您可以在不使用每个项目gemsets的情况下完全逃脱,因为您只需在默认gemset中安装所有gemset,并让Bundler归因于依赖关系管理。