Весна и межплатформенный конфликт?
Я пытаюсь добавить 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 в исходный код.