Answers:
根据先前的答案,这涉及很多内容,因此请简短介绍一下。
gem是Ruby库的打包方式。他们对Ruby来说,罐子对Java一样。在gem文件中,您可以找到Ruby代码(.rb文件),还可以进行测试,还有一个特殊的文件,提供有关gem本身的信息,例如其名称,依赖项和版本( gemspec)。任何Ruby项目都可以通过仅需要声明依赖项的 Gemfile定义所需的gem。Rubygems是程序包管理器的名称-用于安装程序包的工具(而gems是程序包本身)。Rubygems现在是Ruby的一部分。
Bundler使管理宝石变得可以忍受。根据您的Gemfile,使用 bundle install安装包的简单调用将下载并安装所有必需的gem。使用标准gem命令,您将必须使用手动安装它们gem install <gem_name>
。Bundler不是Ruby的一部分(它本身打包为gem),但是对于大多数应用程序来说,它是“事实上的标准”(实际上,您不会发现很多人不使用它,也没有充分的理由不使用它)。
RVM是一种工具,允许您在机器上安装多个Ruby版本,并在需要时在它们之间切换。这可以用于安装Ruby 1.8和1.9,甚至可以安装“ MRI”(Matz的Ruby,默认实现)和替代方案(例如JRuby或Rubinius)。注意,RVM在该字段中并不孤单,例如,参见 rbenv。
一个宝石在RVM是一组特定的宝石,以给定的情况下,通常一个项目。例如,如果您要开发不同的应用程序(每个应用程序都有其自己的gem),并希望将它们分开,则这很有用。
系统Ruby是使用RVM时在机器上安装的Ruby版本(即,不是通过RVM)。
如果您刚刚开始,宝石和捆扎机对您很感兴趣。您可以暂时不考虑RVM和宝石集。
您希望在一个问题中提供比堆栈溢出范围内更多的信息。覆盖所有内容都需要一本书。
在Ubuntu上,很容易将gem安装和删除到Ruby的“系统”版本,因此习惯了通过来安装和删除常规gem sudo
。(在Mac OS上,我会给出不同的建议,因为Apple捆绑了Ruby以供自己使用,将它捆绑在一起并不是一个好主意。)然后,当您知道整个gem想法如何工作时,您知道您想要多个在系统上的Ruby版本中,尝试使用“ rbenv ”或“ RVM ”,然后在沙箱中安装一个或两个版本。
Linux使通过发行版添加/删除Ruby变得容易,但是我们仅限于发行版维护者打包的版本,因此我通常从源代码安装。但是,在为开发,测试和生产系统管理多个版本的Ruby时,这是一个痛苦,这就是为什么发明了rbenv和RVM的原因-它们处理了肮脏的细节,使我们可以专注于编程。
我已经使用了rbenv和RVM,并且在过去六个月左右的时间内一直使用rbenv,效果很好。它没有我喜欢的RVM复杂。无论哪种情况,它们都可以通过单独的宝石组轻松地安装不同版本。如果需要,可以在不同的终端窗口中打开不同的Ruby版本,从而可以轻松测试兼容性。
调试时的规则一是一次更改一次,这对于学习编程或学习新语言是正确的。不要分心,只需保持简单即可。