2010-05-19 4 views
9

J'ai du mal à faire fonctionner l'authentification OpenId avec Authlogic. Il semble que le problème est survenu avec les modifications du plugin open_id_authentication. D'après ce que j'ai lu jusqu'à présent, il faut passer de l'utilisation de gemmes à l'utilisation de plugins.Intégration Authlogic OpenID

Voici ce que je fait jusqu'ici pour obtenir travail d'intégration Authlogic-OpenID:

  1. Removed gemmes pertinentes:
    • authlogic
    • authlogic-oid
    • rack Openid
    • rubis -openid *
    • Installé, configuré et démarré l'exemple authlogic application (http://github.com/binarylogic/authlogic_example)--works comme prévu. Ceci est requis:
    • l'installation de la gem authlogic (2.1.3) ($ sudo gem install authlogic)
    • en ajoutant une dépendance (config.gem "authlogic") au fichier environment.rb.
    • Ajout d'une migration pour ajouter un support Open-ID au modèle User; a couru la migration; Ajout de colonnes comme prévu
    • modifications apportées à UsersController et UserSessionsController pour utiliser des blocs pour les enregistrer.
    • changements aux nouvelles sessions utilisateur en vue de soutenir id ouvert (f.text_field: openid_identifier) ​​
    • plugin open_id_authentication installé (script $/plug-in installer git: //github.com/rails/open_id_authentication.git)
    • a installé le plugin authlogic-oid ($ script/plugin install git: //github.com/binarylogic/authlogic_openid.git)
    • a installé le plugin ($ script/plugin install git: //github.com/glebm/ruby -openid.git)
    • redémarrée bâtarde (CTRL-C, le script $/serveur)

Mogrel n'a pas pu démarrer, retourner l'erreur suivante:

/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- rack/openid (MissingSourceFile) 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/lib/open_id_authentication.rb:3 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/init.rb:5:in `evaluate_init_rb' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:146:in `evaluate_init_rb' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:142:in `evaluate_init_rb' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:48:in `load' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:38:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `each' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:348:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:163:in `process' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `send' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `run' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/config/environment.rb:13 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/railties/lib/commands/server.rb:84 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from script/server:3 

Je soupçonne que cela est lié le joyau de rack Openid, mais comme il dépendait de la gemme de rubis Openid, il a été enlevé lorsque le ruby-openid gem a été retiré. Peut-être que cela peut être installé en tant que plugin.

Toute aide à ce sujet est grandement appréciée - je suis sur le point d'abandonner l'intégration OpenId. * Ruby-openid (2.1.2) est installé dans /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8. Je ne suis pas certain si cela affecte quelque chose. En tout cas, je ne sais pas comment le désinstaller ou si je devrais.

** modifier **

Il semble qu'il y ait un certain nombre de pierres précieuses dans le répertoire /Library/Ruby/Gems/1.8/gems qui peuvent causer un problème:

  • authlogic- oid (1.0.4)
  • rack-ouvert (1.0.3)
  • rubis (OpenID 2.1.7)

Questions: - pourquoi ne pas la liste des pierres précieuses liste de commande ces pierres précieuses? - Pourquoi la commande gem uninstall ne supprime-t-elle pas ces gems?

Répondre

0

Je ne sais pas comment ça marche sur OSX, mais sous Linux si j'installe des gems en tant qu'utilisateur régulier, ils sont placés dans mon répertoire personnel, et si je les installe avec sudo ils entrent dans un répertoire système.

J'ai aussi eu des problèmes de permissions avec les gems, et j'ai dû définir explicitement un GEM_PATH dans mon shell pour que ruby ​​charge les gemmes à partir d'un emplacement spécifique.

  • Ces anciennes gemmes apparaissent-elles si vous exécutez sudo gem list?
  • Avez-vous des gemmes installées dans votre répertoire personnel ainsi que dans /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8?

Modifier:

Ok, je virerais en une séance irb et voir ce qui se passe lorsque vous require les gemmes explicitement.

$ irb 
> require 'authlogic' 
> require 'authlogic-oid' 
... 

Edit:

Si la gemme authlogic-oid est installé et apparaît lorsque vous exécutez sudo gem list, essayez de démarrer irb comme super-utilisateur. Si vous pouvez alors demander authlogic-oid, vous avez un problème de permissions: certains ou tous les fichiers gem sont en lecture seule.

Si cela ne fonctionne pas, vous avez probablement un problème de chemin de chargement - Ruby est confus quant à l'emplacement de vos gemmes installées. Dans ce cas, votre gemme authlogic est probablement installée dans un emplacement différent de votre gemme authlogic-oid.

+0

La liste sudo gem n'énumère pas ces gems. J'ai des gemmes installées à trois endroits: /Library/Ruby/Gems/1.8/gems, /craibuc/.gem/ruby/1.8/gems, et /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr /lib/ruby/gems/1.8/gems. – craig

+0

La désinstallation d'une gem est-elle aussi simple que la suppression du répertoire de la gemme? – craig

+0

Oui, à moins qu'il ne soit également installé des exécutables ailleurs (comme par exemple 'rails' et' haml') – nfm

3

J'ai le même problème ici tout à l'heure, mais j'ai corrigé l'installation de la gemme rack-openid. Je leur demanderai d'ajouter rack-openid aux bibliothèques requises sur la documentation

3

J'ai vécu les mêmes tracas que vous. Peut-être vous devriez juste vérifier, ont obtenu tout ce travail:

http://github.com/shripadk/authlogic_openid_selector_example

Cela comprend un stackoverflow comme Openid trop enregistrement automatique. J'ai hébergé un exemple d'application sur heroku pour que vous puissiez essayer avant de passer la commande si vous le souhaitez.

Questions connexes