В настоящее время мы переходим с Rails 4 на 5, и у нас есть два Gemfiles (аналогично GitHub сделал это), Gemfile
(Rails 4) и Gemfile_5
(Rails 5).
Следующие команды работают так, как ожидалось:
bundle exec rails s
=> Booting WEBrick
=> Rails 4.2.11.12 LTS application starting in development on http://localhost:3000
BUNDLE_GEMFILE=Gemfile_5 bundle exec rails s
=> Booting WEBrick
=> Rails 5.0.7.1 application starting in development on http://localhost:8000
bundle exec rspec spec/...
# runs specs using Rails 4 gemset
BUNDLE_GEMFILE=Gemfile_5 bundle exec rspec spec/...
# runs specs using Rails 5 gemset
bundle exec rails --version
Rails 4.2.11
BUNDLE_GEMFILE=Gemfile_5 bundle exec rails --version
Rails 5.0.7.1
И все же при попытке запустить console
или runner
он будет использовать только гемсет Rails 4:
BUNDLE_GEMFILE=Gemfile_5 bundle exec rails c
Loading development environment (Rails 4.2.11.12 LTS)
BUNDLE_GEMFILE=Gemfile_5 bundle exec rails r "puts Rails.version"
4.2.11
Я попытался перезапустить Spring, но это не дало никакого эффекта. Что мне здесь не хватает?
Хитрость заключалась в том, чтобы полностью отключить Spring, а не просто перезапустить его:
DISABLE_SPRING=1 BUNDLE_GEMFILE=Gemfile_5 bundle exec rails console
Loading development environment (Rails 5.0.7.1)
На данный момент я добавляю
byebug
в спецификацию как способ получить консоль Rails 5, но я бы хотел менее запутанный способ входа...