2009-07-25 6 views
0

J'écris une application rails, qui a quelques modules et méthodes chargés via le répertoire lib, nous avons également ajouté quelques méthodes dans le module d'authentification reposant, maintenant chaque fois que je cours en utilisant le serveur mongrel sur la production je n'obtiens pas cette erreur, parce que les classes de modèles et les classes de contrôleurs sont mises en cache, mais en développement j'obtiens cette erreur, après la première fois, donc je démarre mon serveur en développement et je cours une fois que j'obtiens le bon comportement, mais quand je rafraichis la page include error, alors qu'il affiche que chaque méthode est nulle à itérer, aussi j'ai fait quelques devoirs, comme j'ai ajouté la méthode puts, pour toutes les méthodes pour cette instance pendant l'itération, je n'obtiens aucune définition de méthode pour les attributs du table, comme ID, nom, titre. Je suis incertain à ce sujet,erreur Activerecord .include?

J'utilise Rails 2.2.2 et ruby ​​1.8.7. Le serveur est le mongrel & webrick.

Répondre

1

Cette situation m'est arrivé, où j'avais l'habitude d'obtenir l'erreur seulement après l'actualisation (c'est-à-dire, deuxième appel au serveur).

Il se peut que vous ayez défini un module dans votre répertoire /lib qui ne correspond pas à la convention des rails de dénomination de fichier. Et vous utilisez l'instruction require "filename.rb" pour obtenir le module.

Essayez plutôt d'utiliser require_dependency "filename.rb". Faites-moi savoir si le problème existe toujours, nous pouvons regarder plus en profondeur.

+0

Je suppose que cela peut être une réponse probable à ma question, pouvez-vous s'il vous plaît ajouter plus de détails comme, quel genre de noms de fichiers ne sont pas autorisés. –

+0

hé j'ai essayé de définir require_dependency mais pas de résoudre le problème, à première vue, il charge tout correctement mais dans la deuxième fois, après l'actualisation, j'obtiens l'erreur method_missing. J'ai essayé de charger tous les fichiers de lib avant le démarrage du serveur. –

+0

Pouvez-vous s'il vous plaît fournir le nom des classes et des noms de fichiers? Une pile d'erreur sera également utile. Ouvrez 'script/console' et exécutez " lib/"+" Module :: ClassName ".underscore pour savoir quel devrait être le nom de fichier pour une classe ou un module. –

1

Vous devriez consulter les fichiers log/development.log ou log/production.log (en fonction de l'environnement que vous étudiez). La première ligne de la pile indique la source de l'erreur. Essayez de trouver l'erreur là ou affichez la ligne pertinente (ceci et quelques-uns ci-dessus).