2

我正在尝试向Google添加oauth2,关注的是these instructions春季和中间件冲突?

我收到以下错误消息在启动服务器:安装

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只返回“spring已经存在”)。

+0

您是否升级'Spring'? –

+0

你可以先运行'bin/spring binstub --remove --all'然后'bundle exec spring binstub --all'?确保你升级春天befoe这些所有命令 –

+0

我现在跟着你的步骤,但仍然是相同的错误信息。我应该补充说这是一个新的应用程序,所以几乎没有其他令人不安的代码。第二件事要补充:如果我删除了omniauth-initializer中的代码 - 我不会再有任何错误了。 –

回答

0

把我的comment作为答案,因为OP证实它确实帮助了他。按照下面的步骤来安装新的Spring和解决问题:

  • 来看,这种bin/spring binstub --remove --all
  • 从Gemfile中取出宝石和运行bundle install
  • 现在在Gemfile中添加gem "spring", group: :development,运行bundle installbundle exec spring binstub --alldoc后。现在一切都会好的。
0

检查配置/初始化/ omniauth.rb文件,并确保你有以下内容:

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

确保你到底有没有谷歌的供应商(不GitHub的或Facebook)

0

这是什么对我来说 -

我跑在控制台上 - rake rails:update:bin

然后我跑bundle exec spring binstub --all

我并不保证这可以适用于所有人。

谢谢:)