Intentando migrar mi aplicación desde Rails 3.0 a 3.2, y como parte de esto también estoy actualizando la gema Devise. Resultó que el nuevo Devise requiere una nueva joya OmniAuth. Tengo la autorización de Facebook configurada con OmniAuth. Después de leer la guía de migración, agregué también la gema omniauth-facebook y la configuré en devise.rb.Migrando a OmniAuth 1.0: método indefinido `user_omniauth_authorize_path '
Ahora estoy recibiendo este error:
ActionView::Template::Error (undefined method `user_omniauth_authorize_path' for #<#:0x00000003b01e88>)
yo estaba usando este camino para el botón de inicio de sesión de Facebook. ¿Qué debería usar ahora?
modelo de usuario contiene este (user.rb):
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable
registro del servidor completo:
Started GET "/" for 127.0.0.1 at 2012-02-22 10:39:27 +0200
Processing by PagesController#guardian as HTML
[paperclip] Duplicate URL for photo with /system/:attachment/:id/:style/:filename. This will clash with attachment defined in Asset class
Rendered pages/guardian.html.erb within layouts/application (955.6ms)
Completed 500 Internal Server Error in 1245ms
ActionView::Template::Error (undefined method `user_omniauth_authorize_path' for #<#<Class:0x00000003b213f0>:0x00000003b01e88>):
30: </p>
31: </td>
32: <td>
33: <%= link_to "Login with Facebook", user_omniauth_authorize_path(:facebook), :class => "login_with_facebook_button" %>
34: </td>
35: </tr>
36: </table>
app/views/pages/guardian.html.erb:33:in `_app_views_pages_guardian_html_erb___1979224720320394612_27892940'
Actualización: Ok, me las arreglé para conseguir resolver este problema de ruta. Ahora cuando hago clic en el botón de inicio de sesión de Facebook, obtengo esto:
Started GET "https://stackoverflow.com/users/auth/facebook" for 127.0.0.1 at 2012-02-23 16:02:01 +0200
NoMethodError (undefined method `include?' for nil:NilClass):
omniauth (1.0.2) lib/omniauth/strategy.rb:165:in `call!'
omniauth (1.0.2) lib/omniauth/strategy.rb:148:in `call'
warden (1.1.1) lib/warden/manager.rb:35:in `block in call'
warden (1.1.1) lib/warden/manager.rb:34:in `catch'
warden (1.1.1) lib/warden/manager.rb:34:in `call'
Todo esto es un poco confuso. El problema de la ruta se resolvió después de que especifiqué los parámetros de facebook correspondientes a este tutorial: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview. Ahora también noté que me faltaba omniauth.rb de la carpeta config/initializers, que se menciona en la wiki de omniauth-facebook. He creado omniauth.rb con el siguiente contenido, pero que sigue recibiendo el mismo problema:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['APP_ID'], ENV['APP_SECRET']
end
¿Puede el PASE StackTrace completa? – shingara
Registro de servidor agregado –
¿Ha agregado omniauthable en su modelo de Usuario? – shingara