更改rvm使用的rails版本

这是我当地的gem:

$ gem list *** LOCAL GEMS *** actionmailer (4.0.0, 3.2.14) actionpack (4.0.0, 3.2.14) activemodel (4.0.0, 3.2.14) activerecord (4.0.0, 3.2.14) activerecord-deprecated_finders (1.0.3) activeresource (3.2.14) activesupport (4.0.0, 3.2.14) arel (4.0.0, 3.0.2) atomic (1.1.13) builder (3.1.4, 3.0.4) bundler (1.3.5) bundler-unload (1.0.1) erubis (2.7.0) hike (1.2.3) i18n (0.6.5) journey (1.0.4) json (1.8.0) mail (2.5.4) mime-types (1.24) minitest (4.7.5) multi_json (1.7.9) polyglot (0.3.3) rack (1.5.2, 1.4.5) rack-cache (1.2) rack-ssl (1.3.3) rack-test (0.6.2) rails (3.2.14) railties (4.0.0, 3.2.14) rake (10.1.0) rdoc (3.12.2) rubygems-bundler (1.2.2) rubygems-update (2.0.7) rvm (1.11.3.8) sprockets (2.10.0, 2.2.2) sprockets-rails (2.0.0) thor (0.18.1) thread_safe (0.1.2) tilt (1.4.1) treetop (1.4.15) tzinfo (0.3.37) 

但是当我键入rails -v我得到了这个:

  $ rails -v Rails 4.0.0 $ which rails /Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails 

如何指定rvm使用rails版本3.2.14?

提前致谢

您可以使用特定的rails版本创建一个新的rails应用程序,如下所示

 rails _3.2.14_ new myApp 

如何指定rvm使用rails版本3.2.14?

rvm与rails无关。 rvm用于管理多个ruby安装。 每个ruby安装都可以与多个gemset相关联。 例如,假设您安装了ruby 1.9.3,并为ruby 1.9.3创建了两个gemsets:gemsetA和gemsetB。 如果你告诉rvm使用带有gemsetA的ruby 1.9.3,那意味着:

  1. 你的ruby程序将由ruby 1.9.3执行。

  2. 你的ruby程序可能需要gemsetA中的任何gem(然后允许你的程序使用gemsetA中定义的方法(或类)),但是你的ruby程序不能看到gemsetB中的任何gem。

这是一个具体的例子:

 ~$ rvm list rvm rubies ruby-1.8.7-p370 [ i686 ] * ruby-1.9.3-p194 [ x86_64 ] => ruby-2.0.0-p0 [ x86_64 ] ruby-2.0.0-p247 [ x86_64 ] # => - current # =* - current && default # * - default ~$ rvm use 1.9.3-p194 Using /Users/7stud/.rvm/gems/ruby-1.9.3-p194 

 ~$ rvm gemset list (This lists only the gemsets for the current ruby version) gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194) => (default) global programming rails3tutorial rails4 ~$ rvm gemset use programming Using ruby-1.9.3-p194 with gemset programming 

在我这样做之后,我的ruby程序将由ruby 1.9.3执行,并且编程gemset中的任何gem都可以被我的ruby程序所需。 您可以使用快捷方式在一个步骤中执行这两个命令:

 rvm use ruby 1.9.3-p194@programming 

你只需将ruby版本和gemset与它们之间的’@’组合在一起。

但是当我键入rails -v时,我得到了这个:

 $ rails -v Rails 4.0.0 

那是因为当前的gemset包含了rails 4.0.0的gem。 如果你想看到$ rails -v输出Rails 3.2.14 ,那么你需要告诉rvm切换到包含rails 3.2.14 gem的gemset。

但是,您可以让rvm自动切换到适合您的rails项目的rails版本和gemset。 在你的Gemfile中,在ruby版本之后添加注释:

 ruby '2.0.0' #ruby-gemset=railstutorial4_gems 

然后每当你切换到包含rails项目的目录时,rvm会自动将当前的ruby切换到ruby 2.0.0,将当前的gemset切换到railstutorial4_gems。 如果您更改rails应用程序中的目录,rvm会将当前的ruby和当前的gemset更改回原来的状态。

我只是一个rails初学者,但这里是我用来创建一个新项目的步骤,这些步骤直接来自铁路教程书( http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

1)

 .../rails_projects$ rvm use @ --create eg .../rails_projects$ rvm use ruby-1.9.3-p194@myapp_gemset --create 

2)

 .../rails_projects$ gem install rails --version 3.2.14 

因为当前的gemset是myapp gemset,所以该命令会将rails 3.2.14 gem安装到myapp gemset中。

3)

 .../rails_projects$ rails new myapp .../rails_projects$ cd myapp 

当前的gemset仍然是myapp_gemset。

4)

 .../rails_projects/myapp$ rails -v Rails 3.2.14 

万一有人想知道以下两个gem是什么:

 gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194) => (default) global 

rvm为你安装的每个ruby版本创建这两个gemsets。 安装ruby版本后,如果你没有为该ruby版本自己创建一个gemset,并且你安装了一个gem,那么gem会进入(默认)gemset。 并且,如果您希望所有gemset都包含某个gem,您可以切换到全局gemset并在那里安装gem。

更新: ——-

为了保持与其他ruby版本管理器的兼容性,您可以在不同的文件而不是Gemfile中为项目指定ruby版本和gemset名称:

 $ cd ~/rails_projects/myapp ~/rails_projects/myapp$ echo 2.0.0 > .ruby-version ~/rails_projects/myapp$ echo myapp_gemset > .ruby-gemset 

当你进入你的项目目录时,你仍然会得到相同的自动ruby版本和gemset切换。 请参阅此处的rvm文档。

您找到的路径/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails不是正确使用rvm时在标准rvm安装中找到的路径,您会看到应该是: /Users/polonium/.rvm/gems/ruby-2.0.0-p247/bin/rails

让它正常工作尝试这个流程:

 rvm use 2.0.0 rvm gemset empty rvm use @rails3 --create gem install rails -v "~>3.2" rvm use @rails4 --create gem install rails -v "~>4" 

这样你现在就可以在这两个导轨安装之间切换:

 rvm use 2.0.0@rails3 rails -v # rails 3.2... rvm use 2.0.0@rails4 rails -v # rails 4.0... 

你应该这样做:gem install’rail’-v’3.2.13′

您应该使用干净的gemset,如果您使用的是rvm,您可以尝试:

rvm gemset创建rvm gemset使用

现在你有一个干净的gemset,是时候安装rails了,

gem install rails -v’3.2.13′

然后创建一个rails应用程序,

rails new app_name

“铁路(4.0.0,”是你遇到的问题。我猜它是错误安装的?

使用gem uninstall railties卸载该版本,然后选择4.0.0选项。

现在命令“rails -v”将返回您期望的版本,即“3.2.14”

确保首先确保您处于要使用的ruby版本中,以检查全局gemset

 $ruby -v 

然后切换到全局gemset(全局gemset适用于所有gemsets,所以一定要保持它的清洁和通用…或全局,因此名称)

 $rvm gemset use global 

在那之后检查gem列表中可以影响它的gem,就像Harsha通过打字提到的“铁路”gem一样

 $gem list 

有时,全局gemset可能会被意外的gem填充,这会影响所有其他gem。 如果您发现错位的gem,您只需使用即可将其卸载

 $gem uninstall examplegem 

或者对于-v中特定版本的gem传递,引号中的版本

 $gem uninstall examplegem -v"3.2.1" 

并阅读7stud关于创建和使用RVM以在不同gemset之间进行切换的评论。