【问题标题】:Undefined method `omniauth' for Devise:Module (devise, omniauth, heroku, rails 3.0.3)Devise:Module 的未定义方法“omniauth”(devise、omniauth、heroku、rails 3.0.3)
【发布时间】:2011-10-11 21:05:50
【问题描述】:

我有一个在本地使用亚马逊产品广告 API 的应用程序,没有任何问题。为了将它推送到 Heroku,我必须更改我使用的 aws gem 版本以使其与 Heroku 一起使用(“treyconnell-ruby-aaws”v0.8.3),并且该版本将我限制为 Rails 3.0.3 和设计 v1.1.8 宝石。

当我降级 gem 和“捆绑更新”时,在本地出现了一些平衡,猜测omniauth 和设计开始战斗。服务器无法启动并显示以下错误日志。

我尝试了许多不同的配置来加载omniauth gem、oa-auth、需要omniauth/oauth 等,仍然是同样的错误。这里可能是什么问题?

PS。我现在必须使用这个 aws gem。

/Users/eerdogan/Sites/myApp/config/initializers/devise.rb:17: undefined method `omniauth' for Devise:Module (NoMethodError)
    from /Library/Ruby/Gems/1.8/gems/devise-1.1.8/lib/devise.rb:183:in `setup'
    from /Users/eerdogan/Sites/myApp/config/initializers/devise.rb:3
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/engine.rb:201
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/engine.rb:200:in `each'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/engine.rb:200
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `instance_exec'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `run'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/initializable.rb:50:in `run_initializers'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `each'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `run_initializers'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/application.rb:134:in `initialize!'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/application.rb:77:in `send'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
    from /Users/eerdogan/Sites/myApp/config/environment.rb:5
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:239:in `require'
    from /Users/eerdogan/Sites/myApp/config.ru:3
    from /Library/Ruby/Gems/1.8/gems/rack-1.2.4/lib/rack/builder.rb:46:in `instance_eval'
    from /Library/Ruby/Gems/1.8/gems/rack-1.2.4/lib/rack/builder.rb:46:in `initialize'
    from /Users/eerdogan/Sites/myApp/config.ru:1:in `new'
    from /Users/eerdogan/Sites/myApp/config.ru:1

编辑:这里是 devise.rb 文件:

# Use this hook to configure devise mailer, warden hooks and so forth. The first
# four configuration values can also be set straight in your models.
Devise.setup do |config|
  config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
  require 'devise/orm/active_record'
  config.omniauth :facebook, "1*************", "3******************************"
  config.case_insensitive_keys = [ :email ]
  config.stretches = 10
  config.use_salt_as_remember_token = true
  config.reset_password_within = 2.hours
end

【问题讨论】:

  • 另外,你能粘贴devise.rb的内容吗?错误似乎来自那里。
  • Benjamin,我在上面添加了 devise.rb 文件内容。感谢您调查。

标签: ruby-on-rails-3 heroku devise amazon-web-services omniauth


【解决方案1】:

我认为devise.rb 中的config.facebook 行让你很伤心。

我查看了我的 devise.rb,还有另一个名为 omniauth.rb 的文件。

(1) 我的devise.rb 没有config.facebook 行。尝试删除它,看看它是否有效。

(2) 我有一个名为omniauth.rb 的文件,与devise.rb 位于同一目录中。我把它贴在下面:

require 'openid/store/filesystem'

Rails.application.config.middleware.use OmniAuth::Builder do

  case Rails.env
  when "development"
    provider :facebook, 'XXX', 'XXXX' , {:scope => 'manage_pages,publish_stream,offline_access,email'}

  when "production"
    provider :facebook, 'XXX', 'XXXX', {:scope => 'manage_pages,publish_stream,offline_access,email', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}  
    end
end

看看这是否适合你。 :)

【讨论】:

  • 本杰明,看来您使用的是不同的宝石。我一直在使用的 gem 是 ruby​​-aaws,出于后勤原因,我试图避免在短期内切换它。
  • 非常酷,我认为这是问题所在,似乎版本管理成为 repos 没有跟上最新 Rails 的问题。顺便说一句,我最终切换到了一个新的亚马逊产品广告 api gem,github.com/hakanensari/amazon_product,它的性能非常好,而且相当灵活。我会推荐它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多