Bonjour à tous.
Je suis en pleine mise à jour d'une de mes app vers rails4. Je voulais profiter de cette mise à niveau pour séparer mon code en plusieurs engines. Je me suis dit que j'avais tout intérêt à poser mes questions avant plutôt que mes erreurs après. L'application de base est un outil de gestion des membres pour les organisations à but non lucratif. J'installe cette application dans les différentes structures et je modifie mon code pour l'adapter aux besoins des situations. Pour gagner du temps je pensais déplacer une partie des fonctionnalités dans des engines. L'objectif est d'avoir une application de départ épurée et où l'on puisse facilement ajouter des options. J'ai joué un peu avec des engines dans une application de test et j'ai pas mal épluché les docs et autres blog sur le sujet. Voici les questions que je me pose encore et que je voulais élucider avant de réécrire le code: 1 - Convention pour nommer les engines: Au départ j'ai nommé l'engine par le nom de sa fonctionnalité. Par exemple si je voulais ajouter la gestion des activités pour les membres je nommais l'engine: Activity. Mais lorsqu'on veut générer un modèle du même nom on se rend compte que l'opération ne va pas être possible. Je pensais nommer de la façon suivante: applicationdebase_nomdelafonctionnnalité (ex: member_activity) 2 - full vs mountable J'ai lu pas mal sur cette question. Beaucoup de personnes semblent utiliser et documentent le côté mountable ( les guides, le livre: rails recipes etc... ). J'ai essayé les deux options. Full permet vraiment une implantation simple et rapide de sa fonction ( pas de routage à ajouter, pas d'isolation de nom qu'il ne faut pas oublier etc). Mais je suis conscient des risques de collision avec les noms de mes classes/tables ... Ma question est: si je suis seul à mettre les mains dans le code est-ce malgré tout un risque ou un mauvaise habitude à ne pas prendre? Le code n'aura pas vocation à être utilisé ailleurs que dans cette application. 3 - "if engine exists?" Dans l'application de base je pensais mettre tout le code dont les engines auront besoin. Par exemple dans la barre latérale je voudrai afficher les dernières activités mais seulement si l'engine est installé. Si l'engine est présent le code dans ma vue sera utilisé sinon non. Pendant mes tests j'ai utilisé: if defined? Activity @activities = Activity.allend et dans mes vues: <% if defined? Activity %> <h3><%= @activities.first.title %></h3><% end %> Tout fonctionne mais est-ce une bonne pratique? A-t-on des alternatives? J'ai pensé à une zone d'option dans l'application où l'on pourrait "activer" l'engine une fois installée et remplacer le "defined?" par une vérification de la valeur de l'option. Quels sont vos idées/usages/coutumes avec les engines. Quels sont vos conseils avant de se lancer dans le découpage de mon application? Merci! ps: j'ai posé cette question sur stackoverflow mais je souhaitais avoir le plus d'avis possible<http://stackoverflow.com/questions/20203392/rails-best-pratice-engines> . -- -- 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] --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse [email protected]. Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .
