仅安装rails gem version 5.0.0后,命令'rails -v'会打印'Rails 5.0.1'。为什么?

问题描述:

我现在需要坚持使用Rails 5.0.0。我使用gemset(rails500)和ruby-2.3.3与rvm。我告诉rvm使用gemset并使用命令'gem uninstall rails'从gemset中卸载了其他Rails版本(5.0.1)。之后,我使用命令'gem install rails --version = 5.0.0'来确保我所需的Rails位于gemset中。仅安装rails gem version 5.0.0后,命令'rails -v'会打印'Rails 5.0.1'。为什么?

现在,当我做'rails -v'时,响应是'Rails 5.0.1'。为什么不是'Rails 5.0.0'?当我做一个“gem list | egrep'^ rails'”时,响应是'rails(5.0.0)'。

相关问题:我该如何确定这个版本的rails不是5.0.0?

+0

您必须改用RVM使用所需的红宝石版本并重新打开终端 – user3775217

表观答案由ryanjm在 https://github.com/rubygems/rubygems/issues/542

$ gem uninstall railties -v 5.0.1 

给予必要后

$ gem uninstall rails -v 5.0.1 

请点击此设置你想要的轨道版本:

RVM无关与轨道。 rvm用于管理多个ruby安装。并且您的每个Ruby安装都可以与多个gemset关联。例如,假设你已经安装了ruby 1.9.3,并为ruby 1.9.3创建了两个gemset:gemsetA和gemsetB。如果你告诉rvm使用ruby 1.9.3和gemsetA,那就意味着:

你的ruby程序会被ruby 1.9.3执行。 您的ruby程序可能需要gemsetA中的任何gem(然后允许您的程序使用gemsetA中定义的方法(或类)),但您的ruby程序无法看到gemsetB中的任何宝石。 这里有一个具体的例子:

~$ 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宝石列表(此只列出当前红宝石版本gemsets)

gemsets红宝石-1.9.3-P194(在/用户发现/ 7stud /.rvm/gems/ruby-1.9.3-p194) =>(默认) 全球 编程 rails3tutorial rails4

〜$ RVM宝石使用的编程 使用Ruby-1.9.3-P194与宝石编程 我这样做后,我的ruby程序将由ruby 1.9.3执行,并且编程gemset中的任何宝石都可能需要到我的ruby程序中。您可以使用快捷方式一步执行这两个命令:

rvm use ruby​​ [email protected] 您只需将ruby版本和gemset与它们之间的“@”组合起来即可。

$ 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,红宝石版本后添加评论:

红宝石“2.0.0”

红宝石宝石= railstutorial4_gems

然后当你切换到该目录包含您的Rails项目,RVM自动将将当前的ruby切换到ruby 2.0.0,将当前的gemset切换到railstutorial4_gems。如果你改变你的rails应用程序的目录,rvm会将当前的ruby和当前的gemset改回原来的样子。

我只是一个初学者的轨道,但这里的步骤我用它来创建一个新的项目,这是直出railstutorial书(http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

1)

.../rails_projects $ rvm使用@ --create

eg

.../rails_projects $ RVM使用[email protected]_gemset --create 2)

.../rails_projects $创业板安装导轨 - 版本3.2.14 因为目前gemset是myapp gemset,该命令将rails 3.2.14 gem安装到myapp gemset中。

3)

.../rails_projects $轨新的myapp .../rails_projects $ CD MYAPP 目前的宝石仍然是myapp_gemset。

4)

.../rails_projects/MYAPP $轨-v 的Rails 3.2.14 如果有人想知道究竟发生了什么以下两个gemsets都是关于:

gemsets红宝石-1.9.3-P194(在/Users/7stud/.rvm/gems/ruby-1.9.3-p194找到)

=>(默认) 全球 RVM为您安装每一个Ruby版本创建这两个gemsets 。在安装ruby版本之后,如果您没有为该ruby版本自己创建gemset,并且安装了gem,那么该gem会进入(默认)gemset。而且,如果您希望所有宝石包含某种宝石,则可以切换到全局宝石镶嵌并在其中安装宝石。

更新:-------

要保持与其它红宝石版本兼容性的经理,你可以在不同的文件,而不是在Gemfile中指定项目红宝石版本和宝石名称:

$ CD〜/ rails_projects/MYAPP

〜/ rails_projects/MYAPP $回声2.0.0> .ruby版本 〜/ rails_projects/MYAPP $回声myapp_gemset> .ruby-宝石 你仍然得到同样的自动ruby版本和gemset切换,当你cd到你的项目目录。请参阅此处的rvm文档。

+0

我不知道不管我的问题不清楚,或者你读错了。我说我运行了命令从当前gemset卸载Rails版本(5.0.1),并在其位置安装Rails 5.0.0版本。现在'rails -v'和'gem list'为rails打印不同的版本号。 –