繁体   English   中英

关于rvm的说明以及滑轨之间的切换

[英]clarification on rvm and switching between rails

http://railsapps.github.io/installrubyonrails-mac.html之后 ,我遇到以下命令

rvm use ruby-2.1.3@rails4.1 --create
gem install rails  # installs the latest rails version
rails -v # returns 4.1.6

但是,我也可以执行以下操作,将Rails版本添加到4.0.8

rvm use ruby-2.1.3@rails4.0 --create
gem install rails --version=4.0.8 # installs the latest rails version
rails -v # returns 4.0.8

这有什么意义呢? 在本文中的某个地方,有人说这种方法是为了防止全局gem-set,而是根据项目特定的gemset安装rails? 那有什么意思?

这是有关如何创建新的Rails项目的说明

$ mkdir myapp
$ cd myapp
$ rvm use ruby-2.1.3@myapp --ruby-version --create
$ gem install rails
$ rails new .

为什么不只将Rails称为myapp? 文字说这是“创建特定于项目的gemset”,但我不知道这是什么意思。 这不是只安装Rails 4.1.6(最新版本)吗? 为什么不首先在全球范围内安装Rails 4.1.6?

想象一下,您是一家在过去四年中一直在开发Rails应用程序的公司中的Rails开发人员。 您在Rails 2,Rails 3,Rails 4上都有应用程序-随着新版本的发布,您升级了工具集,因为为什么不呢? 每个新版本都更好。

但是,它们不向下兼容。 Rails 2应用程序不适用于Rails 4.1。 如果在骇入Rails 4 one时被要求紧急调试Rails 2应用怎么办? 卸载全局Rails,安装Rails 2,进行破解,然后卸载Rails 2并再次重新安装新的Rails,只是为了您可以运行测试以解决一站式错误?

这就是使用gemset的地方。每个应用程序都有环境,因此每个应用程序都可以自足运行,而不会发生版本冲突。

如果您不希望在计算机上出现这种版本冲突的情况(即,如果您只能想象在一个项目上工作),那么gemset是完全不相关的。

经过一番迷惑之后仍在编辑中:)让我们一步一步走,看看到底发生了什么。

$ mkdir myapp
$ cd myapp

您现在位于空目录中。

$ rvm use ruby-2.1.3@myapp --ruby-version --create

rvm创建一个新的宝石集,名为ruby-2.1.3@myapp ,它将与Ruby 2.1.3一起运行。 因此,您将在~/.rvm/gems/ruby-2.1.3@myapp一个新目录,该目录将位于您的gemset。 在先前为空的myapp目录中,您还有两个新文件: .ruby-version (包含一行,表示ruby-2.1.3 )和.ruby-version (包含行myapp )。 每次您进入myapp目录时, rvm都会读取这两行:它为您设置了当前的Ruby和gemset。

$ gem install rails

认识到当前的gemset现在是ruby-2.1.3@myappgem install命令将下载最新的rails gem及其所有依赖项,并将它们放在您的gemset目录中( ~/.rvm/gems/ruby-2.1.3@myapp/ )。

$ get install rails --version=4.0.8

如果您尝试这种方法,它将忠实地安装Rails 4.0.8,但是由于您的gemset中有较新的版本,并且您的应用程序没有特别的要求,因此以新版本为准。 这通常不是您想要的; 而且无论如何,很少有理由开发一个项目以符合两个不同版本的库(除非您要开发一个库或一个插件;这是另外一回事)。

$ rails new .

rails实际上正在执行~/.rvm/gems/ruby-2.1.3@myapp/bin/rails 如果您不在myapp目录中(链接到gemset),则该命令将失败(如果未在全局环境中安装Rails),或者将执行已全局安装的Rails(如果已安装)。

因此,实际上并不是在同一项目中同时具有两个版本的Rails。 但是,当您使用另一个gemset创建另一个项目(例如ruby-2.1.3@myotherapp )时,在那里可能会使用其他版本的Rails。 该版本自动的改变只是根据你的目录上cd到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM