请问有人能描述一下在最新版本的Ubuntu上进行全新安装时如何管理所有这些内容的“最佳实践”?我应该安装什么,如何使用它们?
我猜测在系统中执行
sudo apt-get install ruby
可能不被推荐,但我不确定。我已经在我的系统上尝试了这个命令,并安装了“所有其他的Ruby东西”。这只让我更加困惑。我不是在谈论Rails,而是普通的Ruby gems(例如Vagrant、Chef和脚本)。sudo apt-get install ruby
可能不被推荐,但我不确定。我已经在我的系统上尝试了这个命令,并安装了“所有其他的Ruby东西”。这只让我更加困惑。我不是在谈论Rails,而是普通的Ruby gems(例如Vagrant、Chef和脚本)。根据之前的回答,需要涵盖的内容很多,所以请将其视为简短介绍。
Gems是打包Ruby库的方式。对于Ruby来说,它们就像Java中的jar文件一样。在一个gem文件中,你可以找到Ruby代码(.rb文件),还有测试和一个特殊的文件,提供有关该gem本身的信息,例如其名称、依赖关系和版本(gemspec)。任何Ruby项目都可以通过Gemfile声明所需的gem来定义这些gems。Rubygems是软件包管理器的名称,用于安装软件包(虽然gems本身是软件包)。 Rubygems现在是Ruby的一部分。
Bundler 是使管理 gems 变得可承受的工具。基于您的 Gemfile,使用bundle install进行简单调用即可下载并安装所有必需的 gem。使用标准 gem 命令,您将不得不手动安装每个 gem,使用 gem install <gem_name>
。Bundler 不是 Ruby 的一部分(它本身作为一个 gem 打包),但它是大多数应用程序的“事实标准”(您不会找到许多人不使用它,实际上没有不使用它的好理由)。
RVM 是一款工具,允许您在计算机上安装多个 Ruby 版本,并在需要时进行切换。这可以用于安装Ruby 1.8和1.9,或者甚至是“MRI”(Matz的Ruby,即默认实现)和替代品(如JRuby或Rubinius)。请注意,RVM并不是这个领域的唯一选择,例如 rbenv。
gemset 在 RVM 中是指特定上下文中的 gem 集合,通常是一个项目。如果您正在开发不同的应用程序,并且每个应用程序都有自己的 gem 集合,并想要保持它们分开,那么这将非常有用。
系统 Ruby 是使用 RVM 时安装在计算机上的 Ruby 版本(即非通过 RVM 安装的版本)。
如果您刚开始学习,那么 gems 和 bundler 就很有趣了。您可以暂时忽略 RVM 和 gemsets。