Весна и межплатформенный конфликт?

Я пытаюсь добавить oauth2 с Google, следуя этим инструкциям.

Я получаю следующее сообщение об ошибке при запуске сервера:

Exiting
You've tried to invoke Spring when it's already loaded (i.e. the Spring constant is defined).

This is probably because you generated binstubs with Spring 1.0, and you now have a Spring version > 1.0 on your system. To solve this, upgrade your bundle to the latest Spring version and then run `bundle exec spring binstub --all` to regenerate your binstubs. This is a one-time step necessary to upgrade from 1.0 to 1.1.

Here's the backtrace:

/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:287:in `load'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:287:in `block in load'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:259:in `load_dependency'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0/lib/active_support/dependencies.rb:287:in `load'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
/Users/omonia/.rbenv/versions/2.3.1/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
/Users/omonia/Dropbox/MyApp/bin/spring:13:in `<top (required)>'

Связанные драгоценности установлены:

gem 'google-api-client', '0.9'
gem 'omniauth'
gem 'omniauth-google_oauth2'

Следующий код добавлен в config/initializers/omniauth.rb:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, 'my Google client id', 'my Google client secret', {client_options: {ssl: {ca_file: Rails.root.join("cacert.pem").to_s}}}
end

Что здесь происходит? Следование инструкциям по ошибке ничего не меняет (Spring имеет последнюю версию 1.7.2 и работает bundle exec spring binstub --all возвращает только "весна уже присутствует").

6 ответов

Выкладываю мой комментарий как ответ, потому что ОП подтвердил, что это ему помогло. Выполните следующие действия, чтобы установить новую версию Spring и решить проблему:

  • запустить это bin/spring binstub --remove --all
  • удалите драгоценный камень из Gemfile и запустите bundle install,
  • Теперь добавьте gem "spring", group: :development в Gemfile, беги bundle install а также bundle exec spring binstub --all следующий документ Теперь все должно быть хорошо.

У меня была аналогичная проблема после обновления кода до новой версии рельсов, и следующий комментарий помог мне решить ее:

https://github.com/rails/spring/issues/610

В основном отключите пружинный погрузчик в bin/rails заглушка, затем запустить rails s пока все проблемы с кодом не будут найдены и исправлены, наконец, включите функцию Spring Back.

Это то, что сработало для меня -

Я запустил это на консоли - rake rails:update:bin

потом я побежал bundle exec spring binstub --all

Я не гарантирую, что это будет работать для всех.

Спасибо:)

Прежде всего, я не являюсь экспертом по Ruby On Rails, так что поправьте меня, если я делаю что-то не так в следующих шагах.

Шаги, которые у меня сработали, приведены ниже,

из терминала MacOS запустите следующее..

бункер / пружина бункер - удалить - все

** Удалите папку Your Cache в Vender (используйте Finder)

установка пакета.

rails assets:precompile

Проверьте файл config/initializers/omniauth.rb и убедитесь, что у вас есть следующее содержимое:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google, 'Client_Id', 'Client_Secret'
end

убедитесь, что у вас есть провайдер Google (не GitHub или Facebook)

У меня была аналогичная проблема, и после обновления моей рубиновой версии с 2.6.1 до 2.7.1 и рельсов 5 до рельсов 6.

Я прочитал обсуждение здесь и после отключил загрузочный пружинный код в bin/rails

      #!/usr/bin/env ruby
begin
  load File.expand_path('../spring', __FILE__)
rescue LoadError => e
  raise unless e.message.include?('spring')
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

К:

      #!/usr/bin/env ruby
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

я получил ошибку

/home/humayun/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/bootsnap-1.7.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': не могу загрузить такой файл -- thwait (LoadError)

и я исправляю это, добавляя следующие драгоценные камни в свой файл драгоценных камней.

      gem 'cmath'
gem 'scanf'
gem 'shell'
gem 'sync'
gem 'thwait'
gem 'e2mmap'

После этого мои рельсы работают нормально, и я перемещаю bin/rails в исходный код.

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