2010-01-26 10 views
0

J'utilise Authlogic avec l'addon Authlogic-openid (I gem installé ruby- openid et script/plugin install git: //github.com/rails/open_id_authentication.git) et j'obtiens deux erreurs.Authlogic openid: obtention de la méthode indéfinie openid_identifier? erreur dans le test fonctionnel

Lors de l'exécution d'un test fonctionnel, j'obtiens une méthode non définie openid_identifier? message sur une ligne dans mon fichier new.html.erb lorsque exécutant le UsersControllerTest. La ligne est:

<% if @user.openid_identifier? %> 

Lorsque script/console en cours d'exécution, je peux accéder à cette méthode sans aucun problème .

deuxième lors du test de la fonctionnalité Openid et l'enregistrement d'un nouvel utilisateur à mon application à l'aide Openid et en utilisant mon compte blogspot pour que je reçois le texte suivant dans mon fichier journal:

Generated checkid_setup request to http://www.blogger.com/openid-server.g 
with assocication ... 
Redirected to http://www.blogger.com/openid-server.g?openid.assoc_handle=... 
NoMethodError (You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.call): 
    app/controllers/users_controller.rb:44:in `create' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' 
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' 
    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' 

Le code dans le users_controller est simple:

def create 
    respond_to do |format| 
     @user.save do |result| 
       if result 
       flash[:notice] = t('Thanks for signing up!') 
       format.html { redirect_to :action => 'index' } 
       format.xml { render :xml => @user, :status => :created, :location => @user } 
       else 
       format.html { render :action => "new" } 
       format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
       end 
     end 
    end 
    end 

la ligne donnant l'erreur étant @ user.save FAISONS | résultat | ...

Je sens qu'il me manque quelque chose de très basique mais j'ai regardé fixement pendant trop longtemps parce que je ne peux pas trouver ce que c'est. J'ai vérifié avec le code sur les épisodes Railscasts 160 et 170 et le projet GitHub os mais je n'ai rien trouvé.

Merci pour votre aide, usr

Répondre

0

Etes-vous sûr @user est réglé? Il me semble que le problème est que @user est nul.

+0

Oui, il est j'utilise déclarative autorisation et la ligne filter_resource_access est au sommet de la users_controller.rb. Même si j'ajoute @user = User.new (params [: user]) avant la sauvegarde j'obtiens la même erreur. Je pensais que c'était peut-être le fait que j'utilise blogger comme fournisseur openid, mais si j'utilise openid.org, j'ai toujours la même erreur. –

1

Le problème est dû au fait que les plugins authlogic_oauth et authlogic_openid ont été utilisés en même temps. Cela signifie que la méthode save sur l'utilisateur sera gérée par le code openid du code oauth.

Peut-être que la bibliothèque authlogic_rpx peut combiner les deux méthodes avec succès, j'ai besoin de tester cela encore.

Questions connexes