2017-01-06 47 views
0
# I run these commands: 
$ rvm current 
[email protected] 
$ gem list | grep '^rails ' 
rails (5.0.1, 5.0.0) 
$ gem uninstall rails -v 5.0.1 
Successfully uninstalled rails-5.0.1 
$ gem uninstall railties -v 5.0.1 
Successfully uninstalled railties-5.0.1 
$ gem list | grep railties 
railties (5.0.0) 
$ rails -v 
Rails 5.0.0 
$ rails new . -m \ 
https://raw.github.com/RailsApps/rails-composer/master/composer.rb 
# After I answer all the prompts, a Gemfile is created, which requires 
# rails '~> 5.0.1'. After running to completion, Rails Composer leaves 
# me with Rails 5.0.1: 
$ rails -v 
Rails 5.0.1 

我沒有明確要求Rails 5.0.1。那我爲什麼得到它? 它似乎干擾了Rails Composer。見 https://github.com/RailsApps/rails-composer/issues/261https://github.com/RailsApps/rails-composer/issues/260爲什麼Rails Composer在構建應用程序時更新Rails?

回答

1

你觀察到的Rails new命令的行爲。 Rails Composer是一個Rails應用程序模板,並搭載在Rails new發生器上。 Rails new命令生成一個簡單的默認Rails應用程序,然後Rails Composer修改它。由Rails new命令生成的Gemfile包含gem 'rails', '~> 5.0.0'。請注意0​​指定的「悲觀版本控制」。這意味着使用任何大於5.0.0且小於5.1的版本(可以使用任何補丁版本)。當Rails new生成器運行時,它使用由簡單的默認Rails應用程序提供的Gemfile更新gem,包括Rails gem。因此,在Rails Composer運行之前安裝Rails 5.0.1 gem。

您可以通過在不使用Rails Composer應用程序模板的情況下運行Rails new命令來觀察此行爲。

myapp/[email protected] $ rvm current [email protected] myapp/[email protected] $ gem list | grep '^rails ' rails (5.0.0) myapp/[email protected] $ rails -v Rails 5.0.0 myapp/[email protected] $ rails new . . . . run bundle install . . . Installing rails 5.0.1 . . . myapp/[email protected] $ rails -v Rails 5.0.1

總之,你的問題是與Rails new命令,不與Rails的作曲家。

+0

非常感謝Daniel!有一種方法可以解決它。作爲'rails _5.0.0_ new'開始'rails new'將在新應用中使用Rails 5.0.0。我嘗試過使用Rails Composer,並發現它可行。 –

+0

對不起。我忘了用反撥標記逃避命令。非常感謝Daniel!有一種方法可以解決它。 「rails new」作爲'rails _5.0.0_ new''將在新應用中使用Rails 5.0.0。我嘗試過使用Rails Composer,並發現它可行。 –

相關問題