2017-01-06 29 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,并发现它可行。 –

相关问题