更改rvm使用的rails版本

时间:2013-08-17 14:54:36

标签: ruby-on-rails ruby rvm

以下是我的本地宝石:

$ 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?

提前致谢

7 个答案:

答案 0 :(得分:45)

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

rails _3.2.14_ new myApp

答案 1 :(得分:43)

  

如何指定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。

  3. 这是一个具体的例子:

    ~$ 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 <ruby version here>@<new gemset name here> --create 
    
    e.g.
    
    .../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
    

    如果有人想知道以下两个宝石是怎么回事:

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

    rvm为您安装的每个ruby版本创建这两个gemset。安装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
    

    当您cd进入项目目录时,您仍会获得相同的自动ruby版本和gemset切换。请参阅rvm docs here

答案 2 :(得分:19)

你找到的/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...

答案 3 :(得分:5)

你应该这样做:gem install'trail'-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)

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

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

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

答案 5 :(得分:0)

确保首先确保您使用的是您打算使用的ruby版本,以检查全局gemset

$ruby -v

然后切换到全局gemset(全局gemset适用于所有gemset,所以一定要保持干净和通用...或全局,因此名称)

$rvm gemset use global

之后检查宝石列表中可能影响它的宝石,如&#34; railties&#34; Harsha通过输入

提到的宝石
$gem list

有时候,全局宝石可以被意外的宝石填充,这会影响所有其他宝石。如果您发现错位的宝石,可以使用

卸载它
$gem uninstall examplegem 

或针对特定版本的gem传递-v中带引号的文本

$gem uninstall examplegem -v"3.2.1"

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

答案 6 :(得分:0)

您可以使用以下方法添加所需的Rails版本:

$ gem install rails --version 3.2.14

然后创建具有该版本的应用程序:

$ rails _3.2.14_ new myapp

最后,您可以检查出“ Gemfile”的内容以佐证:

...
 gem 'rails', '3.2.14'
...