Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 理解RVM、gems和一般RubyonRails环境设置有困难_Ruby On Rails - Fatal编程技术网

Ruby on rails 理解RVM、gems和一般RubyonRails环境设置有困难

Ruby on rails 理解RVM、gems和一般RubyonRails环境设置有困难,ruby-on-rails,Ruby On Rails,我已经阅读了一些关于这个问题的问答,但仍然感到困惑。我对linux和编程都是新手,所以请记住这一点 我知道Ruby Gems与apt get类似。这是一个包管理器,对吗 因此,如果我想安装或删除gems,我可以通过如下命令来完成:sudogems install{gem name} 那么什么是RVM?我为什么要用它?Ruby Gems做的不就是RVM做的吗?那么为什么Ruby Gems要与RVM一起安装呢 另外,在项目的GEM文件中指定GEM时,使用bundler进行更新等。。这是仅将gems下

我已经阅读了一些关于这个问题的问答,但仍然感到困惑。我对linux和编程都是新手,所以请记住这一点

我知道Ruby Gems与apt get类似。这是一个包管理器,对吗

因此,如果我想安装或删除gems,我可以通过如下命令来完成:sudogems install{gem name}

那么什么是RVM?我为什么要用它?Ruby Gems做的不就是RVM做的吗?那么为什么Ruby Gems要与RVM一起安装呢

另外,在项目的GEM文件中指定GEM时,使用bundler进行更新等。。这是仅将gems下载到该项目,还是现在所有项目都可以使用gems

还有,$PATH是关于什么的?我对它了解不多,所以当我读到它的时候,我对什么是正确的$PATH感到困惑,如果我应该做些什么来管理$PATH中的引用,等等。有人能为初学者解释或指出一些资源吗

最后,我使用了各种教程,从Ruby到Rails再到Gems,它们的版本各不相同。a) 我应该修改我的环境以匹配他们使用的版本吗?b) 一旦我完成了一个教程,我应该把所有的版本都放在一边,还是应该尝试升级到最新和最好的版本

这是令人困惑的,因为如果我在教程中把所有内容都放在版本级别上,那么我会觉得自己陷入了过去。然而,如果我升级到最新和最棒的版本,我觉得一切都在我身上发生了变化,我不知道如何使用我学到的所有技巧和窍门


提前感谢您抽出时间提供帮助。干杯。

这个问题非常广泛,所以我选择尝试在清晰和简洁之间取得平衡。如果有人发现答案有任何错误,请告诉我,我会坦白承认:)

RVM是一个Ruby版本管理器。假设,一些项目可能需要运行Ruby1.9,另一个遗留项目可能需要1.8。RVM允许您同时安装两个安装,而不是一个权威的ruby系统级版本。这有助于安装更高版本的ruby,而无需担心会破坏任何东西,或者会干扰其他用户帐户的ruby版本要求(因为通常会在您的主目录中的用户级别安装RVM)。这甚至可以让您试用ruby的最新版本,而无需担心任何问题,因为您总是可以轻松切换回ruby

当您安装gem时,您通常可以在任何可以使用ruby安装的地方使用它,所以在任何项目中都是如此。当您在Gemfile中指定gems时,您基本上是说,无论您安装了什么gems及其版本,该项目都需要版本2.2的GemX、版本3.1的y和版本1.1的z。如果您还没有这些gem,它会安装它们;如果您有但没有这些版本,它会安装它们

是一种允许操作系统在调用程序时知道在何处查找程序的方法。如果在终端中键入someapp,操作系统怎么可能知道someapp在哪里?它会在$PATH中提供的任何目录中搜索它。您可以通过在shell中执行
echo$path
来查看路径中的内容

至于ruby的各种版本,这让我回到了RVM的原因。如果您想安装他们使用的ruby版本,您可以在GEM文件中特别说明教程使用的GEM版本,您应该可以。您可以安装不同版本的gems,也可以通过RVM安装不同版本的ruby

就我个人而言,我建议大家努力学习最新版本的东西,这样它才有意义。例如,编写使用Rails 2的教程会适得其反,因为它在变为3时发生了很大变化,从3变为3.1或更高版本,等等。如果可能,请使用最新版本,或者至少要注意细微差别(基本材料往往保持大致相同),以免你在一个比较老的教程上工作,只为了用最新版本的东西来完成你自己的项目,而不让它工作


解决你的困境的简单方法是:扔掉那些太旧的教程。有大量的资源,你一定会找到最新的资料。最糟糕的情况是,注明日期的材料通常以评论的形式得到社区的支持,这些评论说明了某物的注明日期版本与其相应的最新版本之间的变化。例如,“记住,在3.1版中,haha.what更改为lol.wut”

我可以理解这是令人困惑的,RubyGems是在编写包管理器时出现的。RVM是一种工具,它可以在您的系统上安装多个版本的ruby,并在它们之间轻松切换

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

Bundler是您编写的一个工具,用于管理应用程序所依赖的Gems。在Bundler之前的旧时代,找出应用程序所依赖的gem可能是一件麻烦事。现在Bundler为你做这件事

Bundler和RVM都不是绝对需要使用的工具,但它们会帮助您。我个人不再使用RVM。这在我看来是个怪物,所以我用rbenv来代替

关于使用什么版本的Rails,我同意如果可能的话,您应该尝试使用3.1版本,但是如果您发现一些示例应用程序使用Rails 3.0,您不需要升级它。此外,您不需要运行绝对最新版本的Rails。Rails3.1有很多最新的Rails3.1.3可能没有的bug修复