2

Ich versuche, oauth2 mit Google hinzuzufügen, nach these instructions.Spring- und Middleware-Konflikt?

Ich erhalte die folgende Fehlermeldung beim Starten des Servers:

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)>' 

Die entsprechenden Edelsteine ​​installiert:

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

Der folgende Code hinzugefügt 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 

Was geht hier vor? Das Folgen der Fehleranweisungen ändert nichts (Spring ist der neuesten Version 1.7.2 und läuft nur bundle exec spring binstub --all gibt nur "Frühling bereits vorhanden" zurück).

+0

Haben Sie 'Spring' aktualisiert? –

+0

Kannst du zuerst 'bin/spring binstub --remove --all' ausführen und dann' exec spring binstub --all' bündeln? Stellen Sie sicher, Sie upgraden Frühjahr vor diesen alle Befehle –

+0

Ich folgte jetzt Ihre Schritte, aber immer noch die gleiche Fehlermeldung. Ich sollte hinzufügen, dass dies eine neue App ist, also kaum ein anderer störender Code. Zweite Sache hinzuzufügen: Wenn ich den Code im Omniauth-Initialisierer entferne - bekomme ich keinen Fehler mehr. –

Antwort

0

Putting meine comment als Antwort, weil OP bestätigt, dass es ihm geholfen hat. Gehen Sie wie folgt vor, um den neuen Frühling zu installieren und beheben das Problem:

  • laufen diese bin/spring binstub --remove --all
  • entfernen Sie das Juwel von Gemfile und laufen bundle install.
  • Fügen Sie jetzt die in Gemfile hinzu, führen Sie bundle install und bundle exec spring binstub --all folgend doc. Jetzt sollte alles in Ordnung sein.
0

prüfen config/initializers/omniauth.rb Datei und stellen Sie sicher, dass Sie haben folgenden Inhalt:

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

sicherzustellen, dass Sie genau die Google-Provider (nicht GitHub oder Facebook)

0

Dies ist, was für mich gearbeitet -

ich diese auf der Konsole lief - rake rails:update:bin

dann lief ich bundle exec spring binstub --all

Ich kann nicht garantieren, dass dies für alle funktionieren würde.

Danke :)