"bundle exec spring" не работает с rbenv?

Почему не работает bundle exec spring?

Я уже вызываю bundle exec и возвращает ошибку. Я нормально звонил bundle exec все время. (Это решение возможного дублированного вопроса).

Я не буду обновлять свой Gemfile через bundle update spring или удалять версию spring, чтобы сделать эту работу. Я не должен быть вынужден изменить установку моего драгоценного камня.

bundle binstubs spring тоже не работает.

steve-air:finalcloud main$ spring -v
Spring version 1.3.5
steve-air:finalcloud main$ bundle exec spring -v
Spring version 1.3.4
steve-air:finalcloud main$ bundle exec spring
/Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:34:in `block in setup': You have already activated spring 1.3.5, but your Gemfile requires spring 1.3.4. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:19:in `setup'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.7/lib/bundler.rb:122:in `setup'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/bundler-1.9.7/lib/bundler/setup.rb:8:in `<top (required)>'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/spring-1.3.5/lib/spring/commands.rb:33:in `<module:Spring>'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/spring-1.3.5/lib/spring/commands.rb:4:in `<top (required)>'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/spring-1.3.5/lib/spring/server.rb:9:in `<top (required)>'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require'
  from /Users/main/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in `require'

Повторить:

  • У Ruby установлен rebenv.
  • Удалите все драгоценности Spring.
  • Установите более низкую версию Spring (например, 1.3.4).
  • Создайте новое приложение Rails.
  • Установить более высокую версию Spring (1.3.5, похоже, исчезло, но я воспроизвел с 1.3.6).
  • Следуйте инструкциям в моей командной строке выше.

Ответ 1

После небольшого исследования, похоже, здесь может быть несколько вещей:

  • система установила драгоценные камни через сборщик установленных драгоценных камней, а специальные рельсы поведения
  • сгенерированные binstubs на уровне rvm и bundle
  • странное поведение в Spring 1.3.5

Основной причиной проблемы является https://github.com/rails/spring/issues/295, которая была исправлена ​​в 1.3.6. См.: https://github.com/rails/spring/blob/master/CHANGELOG.md#136

К сожалению, оказывается, что вы не можете обойти это с ограничениями, указанными автором в вопросе.

Ответ 2

Это ошибка в Spring, которая была исправлена ​​в версии 1.3.6.

Я не буду обновлять свой Gemfile (через обновление пакета spring) или удалять версию Spring, чтобы сделать эту работу --- я не должен принудительно менять установку gem.

К сожалению, это единственные известные обходные решения в версиях выше 1.3.6.

Ответ 3

Просто удалите старую версию spring gem

gem uninstall spring