Неопределенный метод omniauth для Devise:Module (devise, omniauth, heroku, rails 3.0.3)

У меня есть приложение, которое без проблем использует API Amazon Product Advertising API локально. Чтобы отправить его на Heroku, мне нужно изменить версию драгоценного камня aws, который я использую, чтобы заставить его работать с Heroku («treyconnell-ruby-aaws» v0.8.3), и эта версия ограничивает меня Rails 3.0.3 и разработать драгоценные камни v1.1.8.

Когда я даунгрейдю гемы и "бандл апдейт", что-то ломается даже на локальном, угадывая omniauth и devise начинают драться. Сервер не запускается со следующим журналом ошибок.

Я пробовал много разных конфигураций загрузки omniauth gem, oa-auth, требующих omniauth/oauth и т. д., все та же ошибка. В чем тут может быть дело?

PS. Я должен использовать этот драгоценный камень aws на данный момент.

/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 = "[email protected]"
  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

person Engin Erdogan    schedule 11.10.2011    source источник
comment
Кроме того, не могли бы вы вставить содержимое файла devise.rb. Ошибка видимо оттуда.   -  person Benjamin Tan Wei Hao    schedule 12.10.2011
comment
Бенджамин, я добавил содержимое файла devise.rb выше. Спасибо за внимание.   -  person Engin Erdogan    schedule 13.10.2011


Ответы (1)


Я думаю, что строка config.facebook в devise.rb причиняет вам горе.

Я взглянул на свой 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

Посмотрите, получится ли это у вас. :)

person Benjamin Tan Wei Hao    schedule 12.10.2011
comment
Бенджамин, похоже, вы используете другой драгоценный камень. Драгоценный камень, который я использовал, — это ruby-aaws, и по логистическим причинам я стараюсь не переключать его в краткосрочной перспективе. - person Engin Erdogan; 13.10.2011
comment
Очень круто, я думаю, что это была проблема, кажется, что управление версиями становится проблемой для репозиториев, которые не поспевают за последними версиями Rails. Кстати, в итоге я переключился на новый продукт Amazon, рекламирующий api gem, github.com/hakanensari/amazon_product. , который работает очень хорошо и достаточно гибок. Я бы порекомендовал это. - person Engin Erdogan; 18.10.2011