2011-01-16 7 views
2

Ich füge derzeit OpenID-Login-Unterstützung für eine Rails 3.0.0-Anwendung hinzu.NoMethodError beim Versuch, open_id_authentication zu verwenden

Ich habe bereits ruby-openid (das Juwel) und open_id_authentication (das Plugin) installiert. Nachdem jedoch die Schritte folgenden beiden (von der READMEs) einzurichten erforderlich, bin ich immer noch diesen Fehler:

undefined method `authenticate_with_open_id' 

Ich habe versucht, das Problem zu googeln, aber die meisten Fäden scheinen bisher von Jahren und bleiben verdächtig unbeantwortet .

Fehle ich etwas offensichtlich? Was verursacht dieses Problem? Beachten Sie, dass ich keine Probleme hatte, in der Datei environment.rb zu dateibasierten Speichern zu wechseln. Daher bin ich mir sicher, dass das Plugin korrekt installiert wurde.

Update: Einige ungelöste Probleme der gleichen Art:

http://railsforum.com/viewtopic.php?id=23151

Antwort

0

einen ähnlichen Fehler zu erleben; Seltsamerweise arbeite ich an Rails 3.2 in einem anderen Zweig und kann den Unterschied nicht herausfinden; jedenfalls fand ich, dass ich ein wenig weiter hier durch folgende Vorschläge: Rails 3.0.9 + open_id_authentication

Das heißt, das Hinzufügen der Zeile include OpenIdAuthentication nach class SessionsController < ApplicationController:

class SessionsController < ApplicationController 
    include OpenIdAuthentication 

Aber jetzt bekomme ich einen Completed 401 Unauthorized in meinem Log, und sehen einen leeren Seite - nur und Tags. Pfui.

Update: Ooh, bekam weiter; Ich folgte diesem Beitrag: open_id_authentication - "OpenIdAuthentication.store is nil. Using in-memory store." problem

und wie sie vorgeschlagen "fügte ein initializer namens config/initializers/openid.rb mit diesem innen":

require 'open_id_authentication' # this was needed, but not described in the referred-to post 
OpenIdAuthentication.store = :file 

ich dann an den OpenID-Provider gerichtet war, und konnte zu klicken Sie auf „zulassen“, aber zu meiner App auf Rückkehr, sehe ich jetzt:

NoMethodError in SessionsController#create 
undefined method `encoding' for nil:NilClass 

Wie auch immer, schließlich fand ich ein erholsame Routen Problem und festgelegt, dass, und jetzt in Werken Anmeldung!