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

时间:2017-01-06 11:23:10

标签: ruby-on-rails rubygems ruby-on-rails-5

我现在需要坚持使用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 -v'时,响应是'Rails 5.0.1'。为什么不是'Rails 5.0.0'?当我执行“gem list | egrep'^ rails'”时,响应为'rails(5.0.0)'。

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

2 个答案:

答案 0 :(得分:0)

请按照以下步骤设置所需的导轨版本:

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

您的ruby程序将由ruby 1.9.3执行。 你的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(仅列出当前ruby版本的gemsets)

gemy for ruby​​-1.9.3-p194(见/Users/7stud/.rvm/gems/ruby-1.9.3-p194) => (默认)    全球    程序设计    rails3tutorial    rails4

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

rvm使用ruby 1.9.3-p194@programming 您只需将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中,在ruby版本之后添加注释:

ruby​​' 2.0.0'

红宝石宝石= 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使用@ --create

e.g。

... / rails_projects $ rvm使用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 如果有人想知道以下两个宝石是什么:

gemy for ruby​​-1.9.3-p194(见/Users/7stud/.rvm/gems/ruby-1.9.3-p194)

=> (默认)    全球 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版本 〜/ rails_projects / myapp $ echo myapp_gemset> .ruby,宝石 当你进入你的项目目录时,你仍然可以获得相同的自动ruby版本和gemset切换。请参阅此处的rvm文档。

答案 1 :(得分:0)

ryanjm给出了明显的答案 https://github.com/rubygems/rubygems/issues/542

$ gem uninstall railties -v 5.0.1

之后

是必要的

$ gem uninstall rails -v 5.0.1