On 5/28/07, Nicolas Delsaux <[EMAIL PROTECTED]> wrote: > > On 5/28/07, Cyril Mougel <[EMAIL PROTECTED]> wrote: > > > > Ce qu'il faut faire, c'est de ne pas faire de require directement dans > > ton model. En effet, si tu as besoin de require dans ton application > > rails, il faut utiliser le fichier environnement.rb > > OK. > > > > Si tu fait ton require dedans et ainsi il sera accessible partout dans > > ton application. Le mieux est de mettre aussi ce fichier à rajouter > > dans lib/ > > > Oula. > Tu veux dire qu'un truc que je n'utilise que dans un modèle doit être > placé dans le dossier lib plutôt que dans mon diossier models ? Je > trouve ça plutôt curieux. Mais bon, si c'est la convention, et que ça > aide à bien ranger mon code, why not ... Et si dans une classe je dois > charger une liste dynamique de fichiers, je fais comment ?
Ce n'est pas exact. La seule garantie que t'offre le dossier lib par rapport au dossier dqsdqs/dqsdqs/dsqdqs c'est qu'il est chargé dans le load path, tout comme models. Il faut bien comprendre comment fonctionne require dans rails, quand on fait un require 'toto' rails vérifie si un fichier toto.rb existe dans les répertoires de la variable globale $LOAD_PATH. Attention également require est censé ne chargé les fichiers qu'une fois (en fait bizarrement on peut toujours le faire 2 fois mais pas plus) donc multiplier les require du même fichier est globalement une mauvaise idée. Il faut faire attention avec require car si on l'utilise mal ca va charger plusieurs fois la même classe et donc potentiellement les observers seront executés 2 fois... Ma préférence perso va à require_dependency qui check si la constante Toto existe et ne charge le fichier que si elle n'existe pas (en plus ca recharge le fichier à chaque requête en mode development). Bref quand on se retrouve fasse à un problème de chargement de class il faut checker plusieurs choses. -la variable $LOAD_PATH qui contient l'ensemble des répertoires qui vont être recherché -est-ce que le model qu'on cherche à charge est bien dans un fichier correspondant à la camelisation du nom du model (=> Attention à la single inheritance, les sous classes ne sont pas automatiquement chargeable quand elles sont dans le fichier même fichier que la classe mère) -au cours des migrations d'autres problèmes entrent en compte, la modification des colonnes d'une table ne sont pas pris en compte si le model était déjà chargé, ce qui entraine des problèmes très bizarre parfois, genre update_attribute qui ne fonctionne pas sur les bonnes column... A priori au vu de la maigre description du problème il y a fort à parier que c'est le cas 1 ou 2, le premier truc à vérifier c'est la variable globale $LOAD_PATH, le deuxième est de vérifier que le require n'a pas déjà eu lieu au mauvais endroit ce qui empèche le chargement ici. Renaud --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED] -~----------~----~----~----~------~----~------~--~---
