根据之前的答案,这涉及到很多内容,因此请考虑这是一个简短的介绍。
gems是 Ruby 库的打包方式。它们之于 Ruby 就像 jar 之于 Java。在 gem 文件中,您可以找到 Ruby 代码(.rb 文件),还有测试,以及一个提供 gem 本身信息的特殊文件,例如它的名称、依赖项和版本( gemspec)。任何 Ruby 项目都可以通过Gemfile定义它需要的 gem ,只需要声明依赖项。Rubygems是包管理器的名称 - 用于安装包的工具(而 gems 是包本身)。Rubygems 现在是 Ruby 的一部分。
Bundler使管理 gems 变得可以忍受。根据您的 Gemfile,使用bundle install对 bundler 的简单调用将下载并安装所有必需的 gem。使用标准 gem 命令,您必须手动安装它们中的每一个,使用gem install <gem_name>
. Bundler 不是 Ruby 的一部分(它本身被打包为 gem),但它是大多数应用程序的“事实上的标准”(你不会发现很多人不使用它,实际上也没有充分的理由不使用它)。
RVM是一种工具,允许您在一台机器上安装多个版本的 Ruby,并在需要时在它们之间切换。这可用于安装 Ruby 1.8 和 1.9,甚至是“MRI”(Matz 的 Ruby,默认实现)和替代品(例如 JRuby 或 Rubinius)。请注意,RVM 在该领域并不孤单,请参见例如rbenv。
RVM 中的gemset是一组特定于给定上下文(通常是项目)的 gem。例如,如果您正在开发不同的应用程序,每个应用程序都有自己的一组 gem,并且希望将它们分开,这将非常有用。
系统 Ruby是在使用 RVM 时安装在机器上的 Ruby 版本(即,不是通过 RVM)。
如果您刚刚开始,那么您会对 gems 和 bundler 感兴趣。您现在可以将 RVM 和 gemsets 放在一边。