Alors voilà, je suis en train de développer un ensemble d’éléments
pour intégrer des fonctions de recherches dans mon application.
Dans cet ensemble j’ai :
des partiels (pour l’instant je les ais mis dans /views/search/
_NOM_DU_PARTIEL) -> me servent à afficher les différents types de
champs pour la recherche
des fontions ( post_to_hash, hash_to_sql…) qui sont pour
l’instant dans application controller.
En effet j’ai besoin d’appeler ces fonctions depuis mes controlleurs,
où je réceptionne les params de la recherche qui sont postés,
transforme ca en requete SQL, exécute la requête et finalement affiche
le résultat. Seulement je trouve ca un peu moche d’avoir toutes ces
fonctions ( il y en a une petite dizaine) qui polluent mon
application_controller, d’autant plus qu’elles n’ont rien à voir avec
à proprement parler des “actions”, ces fonctions servent juste à
retourner un élément à partir d’un autre (hash -> string…) et je ne
sais pas où je peux les déplacer. En premier lieu j’avais pensé à un
Helper ( mais les helper ne sont pas fait pour ca -> pas accessible
depuis les controlleurs ) alors je m’interroge !?
J’ai pensé à un module, parce ce que je développe est ni plus ni moins
qu’un module de recherche mais je ne sais pas, où placer un module
dans la hiérarchie des répertoires rails ? comment inclure un module
dans un controlleur ?
Voilà, si jamais vous avez des conseils, ils sont les bienvenus ! Je
ne pense pas que je doive déplacer mes partiels mais si vous estimez
que ca puisse être plus propre j’écoute !
Merci, je vais donc faire ca mais cela me pose 2 problèmes :
Premièrement : le fichier est chargé au démarrage et je dois relancer
le serveur à chaque fois que je veux en prendre en compte les mises à
jour ? Est-ce possible de changer ce comportement ? Sinon, il m’est
impossible de développer en devant relancer le serveur à chaque
modification !
Deuxièmement : pour que l’ensemble de mes fonctions soient bien
chargées, je ne peux pas les placer dans un module : si j’ajoute
“module search […] end” à mon fichier, les fonctions ne sont plus
chargées au démarrage ? cela n’est pas très grave mais je trouverai
plus propre d’encapsuler mes fonctions dans un module, y a-t-il une
solution ?
Premièrement : le fichier est chargé au démarrage et je dois relancer
le serveur à chaque fois que je veux en prendre en compte les mises à
jour ? Est-ce possible de changer ce comportement ? Sinon, il m’est
impossible de développer en devant relancer le serveur à chaque
modification !
Une piste, certes bourrine : En environnement de dev tu fais un
require “#{RAILS_ROOT}/config/initializers/mon_module.rb”
Premi�rement : le fichier est charg� au d�marrage et je dois relancer
le serveur � chaque fois que je veux en prendre en compte les mises �
jour ? Est-ce possible de changer ce comportement ? Sinon, il m’est
impossible de d�velopper en devant relancer le serveur � chaque
modification !
Une piste, certes bourrine : En environnement de dev tu fais un
require “#{RAILS_ROOT}/config/initializers/mon_module.rb”
Et pourquoi ne pas tout simplement placer ce module dans “lib”?
Un simple require MonModule suffit alors dans le controleur
mettre le module dans /lib/search_module.rb , le nom de mon module
est SearchModule, ainsi rails le charge à chaque démarrage
pour que rails recharge automatiquement le fichier dans
l’environement de développement (évite d’arreter/relancer le serveur à
chaque modification), ajouter cette ligne à config/environments/
development.rb