2011-04-22 78 views
36

我设置了RVM并用它来安装Ruby和其他一些库。当我正在浏览像Rails这样的其他技术的各种教程和设置时,我开始对通过RVM应该做什么感到困惑,以及我应该如教程所建议的那样做。如何在使用RVM时安装Ruby gems?

一个例子是RubyGems的教程在这里: http://rubygems.org/pages/download

我应该下载他们所谈论的tar文件?似乎没有必要,因为这是我认为RVM的目的。我甚至需要RubyGems吗?那真的是什么?

另外,我该如何获得Rails?是否有精确的RVM命令来实际下载和安装Rails?

+7

我不明白为什么有人将此标记为主观或论证。显然,有人没有理会这个问题。 – 2011-04-22 18:41:10

回答

47

它可以帮助我将RVM视为您和ruby生态系统之间的一个抽象层。

没有RVM:ruby,gem和ruby相关的二进制文件(如rake,spec,gem等)都直接安装到操作系统目录中。

随着RVM:红宝石相关的东西被rvm拦截,使红宝石,宝石和红宝石相关的binares以一种很好,干净,有组织的方式“安装”到〜/ .rvm目录中。 RVM位于ruby,宝石和相关的二进制文件和操作系统之间。它提供了在同一台机器上拥有多个ruby环境(使用不同的gem和二进制文件)的方法。

所以,不管你是否安装了rvm,你都应该能够运行这些命令几乎完全(*),因为它们出现在Web上的任何教程中。换句话说,您可以“忘记”RVM已安装;红宝石生态系统应该就好像它没有安装一样。

所以,是的,你得跑gem install rails

希望帮助明确的混乱。

(*)有一些小的差异。例如:安装RVM时,不应将命令作为sudo运行。

+16

“你应该能够运行这些命令,就像它们出现在网络上的任何教程中一样。”不。任何教程建议您使用'sudo'来安装gem将会失败。 RVM特别说:“[不要使用sudo ...](https://rvm.beginrescueend.com/rubies/rubygems/)”。 – 2011-04-22 18:39:22

+0

啊,很好的电话关于sudo,天满。我会更新我的答案。 – Upgradingdave 2011-04-22 18:56:36

+0

@theTinMan您的链接已损坏。 – KomodoDave 2013-04-04 13:23:02

4

无需安装rubygems。 RVM应该已经安装了rubygems。 RVM(在我看来)对管理不同的ruby安装(比如1.8.7和1.9.2)或不同的gemsets很有用。如果你只有一个版本的Ruby,并且不关心不同的gemset,那么RVM并不是真正的改变。如果你只想安装导轨,只需使用gem install rails。如果您有现有的rails 3应用程序,请首先安装打包程序gem install bundler,然后再安装bundle install以获取rails和其他gem依赖项。

+1

所以为了一致性,有没有办法通过RVM安装rails? “gem install rails”是做什么的?它使用知道如何安装/下载rails的ruby安装吗?它是怎么运行的?大声笑 – Genadinik 2011-04-22 17:53:59

+2

做'rvm gemdir'。它会告诉你在哪里安装'gem install'。然后'gem install rails'将被安装到该目录中。所有已安装的红宝石都在'〜/ .rvm/rubies'中。宝石在'〜/ .rvm/gems'中。事实上,与rvm有关的一切都在'〜/ .rvm'中。 HTH – Zabba 2011-04-22 18:16:41

+0

Ruby 1.9+将RubyGems作为其正常安装的一部分进行安装。对于Ruby <1.9,我认为RVM会提供帮助并包含宝石。 – 2011-04-22 18:42:45

11

我应该下载他们正在谈论的tar文件吗?

否。Ruby 1.9+包含宝石。 RVM改装1.8+。

一般来说,在互联网上找到的解释如何安装任何东西的方向一定要小心,除非你有足够的经验来完全理解他们希望你做什么。特别是,他们希望您在任何时候使用sudo或以root身份安装某些内容。

具体来说,使用RVM时,您不希望使用sudo来安装Ruby,or any gem。RVM的工作原理是为您的开发设置一个沙盒,并依赖于您的账户环境,修改您的路径,以便任何Ruby请求转到当前选定的RVM管理的Ruby或gem或他们安装的任何命令。 sudo将常规环境推到一边,暂时替换root用户,安装您要求用root权限执行的任何操作,然后恢复到您的环境。

当您像运行一样运行命令或查找gem时,RVM的Ruby无法找到它,因为该文件安装在RVM的沙箱外部,或者它不能被读取或修改,因为它由root拥有。不管实际的原因如何,最终的结果将是哭泣和咬牙切齿。

RVM不会颠覆gem的功能。 gem用于安装和管理Ruby gems,并且RVM会调整它以使用沙盒进行所有机械手动。由于RVM支持gemsets,您可以获得附加功能,但gem的工作方式与以往一样,只有它具有控制其世界的“大哥哥”RVM。

+0

+1用于安全警告 – 2014-11-05 11:00:26