2010-05-09 15 views
9

J'essaie de faire fonctionner la gemme OAuth avec Rails 3 et je suis confronté à ce problème bizarre ... (indépendant de la gemme, je crois que j'ai déjà rencontré ça auparavant)Premier appel à un contrôleur, Constante est définie, Deuxième appel, "constante non initialisée Oauth"?

J'ai un contrôleur appelé "OauthTestController", et un modèle appelé "ConsumerToken". Le modèle ressemble à ceci.

require 'oauth/models/consumers/token' 
class ConsumerToken < ActiveRecord::Base 
    include Oauth::Models::Consumers::Token 
end 

Quand je vais à «/oauth_test/twitter », il charge le module Oauth::Models::Consumers::Token et je suis en mesure de se connecter à twitter aucun problème. Mais la deuxième fois que je l'essayer (juste rafraîchir l'url /oauth_test/twitter), il me donne cette erreur:

NameError (uninitialized constant Oauth): 
    app/models/consumer_token.rb:4 
    app/models/twitter_token.rb:2 
    app/controllers/oauth_test_controller.rb:66:in `load_consumer' 

Pourquoi? Il a quelque chose à voir avec les chemins de chargement ou d'être en mode de développement peut-être?

+0

Fonctionne-t-il en mode production? –

Répondre

5

Essayez d'utiliser require_or_load au lieu de require. Cela force la pleine charge chaque fois en développement et peut parfois aider avec ce genre de problème.

2

Oui, c'est quelque chose à voir avec le fait d'être en mode développement. Définir config.cache_classes = true dans votre développement.rb ça marche (mais c'est une douleur dans le cul)