Почему Rails Composer обновляет Rails при сборке приложения?

# I run these commands:
$ rvm current
ruby-2.3.3@rails500
$ 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

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/2.4.0@rails500 $ rvm current ruby-2.4.0@rails500 myapp/2.4.0@rails500 $ gem list | grep '^rails ' rails (5.0.0) myapp/2.4.0@rails500 $ rails -v Rails 5.0.0 myapp/2.4.0@rails500 $ rails new . . . . run bundle install . . . Installing rails 5.0.1 . . . myapp/2.4.0@rails500 $ rails -v Rails 5.0.1

Таким образом, ваша проблема с Rails new команда, а не с Rails Composer.

Другие вопросы по тегам