2017-01-06 2 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/261 и https://github.com/RailsApps/rails-composer/issues/260Почему Rails Composer обновляет Rails при создании приложения?

ответ

1

Вы наблюдали поведение команды Rails new. Rails Composer - это шаблон приложения Rails и коннекторы на генераторе Rails new. Команда Rails new генерирует простое приложение Rails по умолчанию, а затем Rails Composer его модифицирует. Gemfile, сгенерированный командой Rails new, содержит gem 'rails', '~> 5.0.0'. Обратите внимание на «пессимистическое управление версиями», указанное ~> 5.0.0. Это означает, что любая версия больше 5.0.0 и меньше 5.1 (любая версия патча может быть использована). Когда генератор Rails new запускается, он обновляет драгоценные камни, включая камень Rails, используя Gemfile, предоставляемый простым приложением Rails по умолчанию. Таким образом, камень Rails 5.0.1 устанавливается до запуска Rails Composer.

Вы можете наблюдать за этим путем, выполнив команду Rails new без шаблона приложения Rails Composer.

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 Composer.

+0

Большое спасибо, Даниэль! Есть способ обойти это тоже. Запуск «rails new» в качестве «rails _5.0.0_ new» будет использовать Rails 5.0.0 в новом приложении. Я попробовал это с Rails Composer и нашел, что он работает. –

+0

Извините. Я забыл сбежать из команды с обратными клещами. Большое спасибо, Даниэль! Есть способ обойти это тоже. Запуск «rails new» в качестве «rails _5.0.0_ new'' будет использовать Rails 5.0.0 в новом приложении. Я попробовал это с Rails Composer и нашел, что он работает. –

Смежные вопросы