2012-01-15 62 views
0

我已经经历了几个Q & A的位置在这个问题上阅读,但我仍然感到困惑。我是linux的新手,并且是编程新手,所以请记住这一点。很难理解RVM,宝石,和一般的Ruby on Rails环境设置

我知道Ruby Gems与apt-get类似。这是一个包管理器 - 正确吗?

所以,如果我想安装或删除的宝石,我可以通过一个命令做到这一点,如:须藤宝石安装{宝石名称}

那么那么,什么是RVM?我为什么要使用它? Ruby Gems不会做RVM的功能吗?那么为什么Ruby Gems会与RVM一起安装?

此外,在项目的Gemfile中指定的宝石时,然后用捆绑更新,等等。这是下载的宝石只能到该项目,或将它们现在可以在所有项目中可用?

另外,什么是$ PATH?我不太了解它,所以当我阅读它时,我对什么是正确的$ PATH感到困惑,如果我应该做什么来管理$ PATH中的引用,等等,可以有人解释或指向任何适合初学者的资源?

最后,我使用的各种教程,和他们不同的版本,一切从红宝石到Rails到宝石。 a)我应该修改我的环境以匹配他们使用的版本吗? b)一旦我完成了一个教程,我是否应该单独留下所有版本,还是应该尝试将所有内容升级到最新最好?

这是令人困惑的,因为如果我在教程的版本级别放下一切,然后我觉得我停留在过去。虽然如果我升级到最新,最好的,我觉得事情已经全部转向我,我不知道如何使用我学到的所有技巧和窍门。

非常感谢您花时间帮忙。干杯。

回答

2

这个问题非常广泛,所以我选择试图平衡明确性和简洁性。如果有人发现什么不对的答案,请告诉我会直线上升坦白吧:)

RVM是一个Ruby版本管理。假设一些项目可能需要运行ruby 1.9,另一个传统项目可能需要1.8。 RVM允许您同时安装两个安装,而不是拥有一个权威的系统级版本的ruby。这有助于安装更高版本的Ruby,而不用担心破坏任何内容,或者干涉其他用户帐户的Ruby版本要求(因为通常在用户级别,在主目录中安装RVM)。这甚至可以让你在没有任何担心的情况下试用红宝石的最新版本,因为你总是可以轻松地切换回来。

当您安装一个宝石,它一般也可供你到处是红宝石安装提供给你,所以在任何项目。当您在Gemfile中指定宝石时,基本上说,不管您安装的任何宝石及其版本如何,项目的都需要版本2.2的gem x,版本3.1的y和版本1.1的z。如果您还没有安装它们的宝石,如果您使用的不是这些版本,则会安装它们。

Path是一个environment variable,它允许操作系统在调用它们时知道去哪找程序。如果在终端中键入someapp,操作系统如何知道someapp是哪里?那么它会在$ PATH中提供的任何目录中搜索它。通过在shell中执行echo $PATH,可以查看路径中的内容。

至于各种版本的红宝石,这让我回到了RVM的原因。你可以,如果你想安装他们使用的ruby版本,然后在你的Gemfile中明确说明教程使用的gem版本,你应该没问题。您可以安装不同版本的gem,并且可以使用RVM安装不同版本的ruby。

就我个人而言,我会建议朝着最新版本的一切工作,以便它保持相关。例如,使用Rails 2的教程的工作会适得其反,因为当它变为3时会发生很大变化,并且会从3变为3.1以上等等。如果可能,请使用最新版本,或至少了解这些细微差别(基础材料往往保持大致相同),以免你使用的教程比较老,只能用最新版本的各种工具在你自己的项目上工作,而没有它的工作。

简单的解决您的难题:抛弃过时的教程。在那里有大量的资源,你一定会找到最新的材料。最糟糕的情况,过时的材料通常以评论的形式提供社区支持,其中陈述了某些东西的版本与其相应的最新版本之间的变化。例如。 “请记住,哈哈。在3.1版中更改为lol.wut”

+0

这有助于很多。因此,如果没有RVM,我将无法拥有不同版本的宝石?另外,我将如何使用RVM切换ruby版本 - 这也是在Gemfile中指定的内容? – Nathan 2012-01-15 08:39:52

+0

如果没有RVM,您仍然可以拥有不同版本的宝石。在Ruby版本之间切换取决于RVM。我建议你看看有关RVM的教程以获取更多信息,这非常简单。也许[this](http://beginrescueend.com/rvm/basics/)。你可以用'rvm list'来列出安装,'rvm use'切换到一个''rvm install'来安装特定的版本,等等。 – 2012-01-15 10:47:17

+0

好的,谢谢。现在越来越清楚了。 – Nathan 2012-01-15 12:01:52

0

我可以理解这是令人困惑的,RubyGems就像您编写包管理器一样。 RVM是一个工具,可以在系统上安装好几个ruby版本,并且可以在它们之间轻松快捷地进行安装。

如果您使用各种教程,并且它们的版本从Ruby到Rails到Gem的版本不同,您可以(如果您想)为您使用的版本创建RVM Gemset。然后,您将为项目中的Gems Bundler创建一个沙盒。

Bundler是您编写管理应用程序所依赖的Gems的工具。在Bundler之前的日子里,找出应用程序所依赖的宝石可能是一件麻烦事。现在Bundler为你做这个。

Bundler和RVM都是非绝对必需使用的工具,但它们将帮助您。我个人不再使用RVM。这是我口味中的一个怪物,所以我使用rbenv代替。

关于哪些版本的Rails使用我同意你应该尝试使用3.1版本,如果可能的话,但如果你找到一些使用Rails 3.0的示例应用程序,你不需要升级它。你也不需要运行绝对最新版本的Rails。 Rails 3.1有很多错误修复,最新的Rails 3.1.3可能没有。

+0

感谢Bandola,这有助于。 – Nathan 2012-01-15 12:01:42