3

多年来,我一直梦想着学习 Ruby 和 Rails 框架。(我的大部分开发生涯都让我太忙了,没有时间花时间正确地学习一门新语言,但我现在有更多时间。)我喜欢能够使用 Ruby 快速开发的概念,但我我无法理解 Ruby 安装过程。

每次遇到它,Ruby 的安装过程都会略有不同。我在过去几年中使用的两台笔记本电脑通常都在运行当时最近发布的 OS X 版本,并且似乎都带有 Ruby 1.8.7。任何现代版本的 Rails 都需要 Ruby 1.9.x。所以,我在网上搜索,总是碰到这样的帖子:

使用这个很棒的工具 rvm 来管理同一台机器上的多个 Ruby 安装。

或这个:

rbenv 很棒,与 rvm 相比轻量级,请改用它。

真的吗?Ruby 安装过程在做什么,为什么这么复杂?到目前为止,我已经安装并运行了 Ruby,但似乎我一直遇到问题。我真的很困惑,想了解 Ruby 是如何在我的系统上运行的。这些配置工具在操作什么文件,为什么我不能手动操作呢?

换一种说法:如果我是 RVM 或 rbevn,我将采取哪些步骤来使 Ruby 在给定系统上工作?我在操作配置文件吗?我是在下载源代码并将其编译成解释器吗?我要下载预编译的解释器吗?

4

1 回答 1

5

Rbenv 和 rvm 管理 Ruby 的多个版本。您链接到的问题描述了这两种工具是如何做到的(有些人认为 rvm 与您的 shell 的集成过于重量级/神奇)。让多个版本的 Ruby 共存的能力是一个很大的胜利。从历史上看,有一些破坏性版本(例如 1.8.7、1.9.2),因此能够零碎地迁移您的开发或轻松地处理遗留项目是非常有利的。

Ruby 安装过程本质上并没有那么复杂——它几乎是通常的源代码下载./configure && make && sudo make install(RVM 还支持预构建的 Ruby)。但是,您可以将自己打结(尤其是作为 Ruby 的新手)

虽然某些缺少的依赖项只会导致 Ruby 构建过程失败,但其他依赖项只会停止编译特定的 Ruby 扩展(openssl 或 readline)。在您尝试运行一些使用这些扩展的代码之前,您认为您拥有一个功能齐全的 Ruby。其他的则更加微妙,例如,如果 libyaml 不可用,那么某些版本的 Ruby 会回退到使用 syck 作为 YAML 库,而不是更现代的 psych 库,但存在细微差别。

RVM 让它变得非常简单,编译几乎任何 Ruby 解释器、版本或补丁级别(jRuby、Rubinius、MRI 等),无论是否有额外的补丁,都只是一次调用。它没有做任何非常神奇的事情,但确实消除了很多摩擦。

于 2013-08-18T10:59:03.550 回答