2010-01-24 4 views
2

Je suis relativement nouveau à Rails et j'ai récemment trouvé quelques gemmes utiles comme authlogic qui aideront à faire avancer le projet très rapidement. Cependant, je me suis demandé où placer les fichiers model, view et controller qui dépendent du plugin, mais qui sont les concepts de base de mon projet.Rails: Où placer les fichiers plugin

Par exemple, est-il préférable de placer l'utilisateur, rôle, session, etc .. modèles et les contrôleurs associés avec le plug-in dans le répertoire vendor/, ou devrais-je les placer à l'intérieur de la racine model/, view/ et controllers/ répertoires respectivement ?

Répondre

2

Même les modèles/vues/contrôleurs dépendant des plugins doivent être conservés dans les répertoires app/model, app/view et app/controllers avec votre autre code. La raison "structurelle" est que la majeure partie de tous ces fichiers seront toujours spécifiques à votre application. Vous allez probablement finir par ajouter des champs à l'utilisateur, ou ajouter des instructions has_many à votre modèle User, etc. Vous voulez tout ce code avec le reste de votre code d'application de base dans le répertoire app.

La raison "fonctionnelle" est que vender/plugins est seulement pour le code se rapportant spécifiquement à ce plugin et est traité différemment au cours du développement. Par exemple, lorsque vous ajoutez un nouveau plugin, il n'est pas automatiquement chargé en mode développement. Donc, si vos fichiers de base étaient là, ils ne seraient pas rechargés automatiquement, même en mode développement.

+0

cela a beaucoup de sens des deux points de vue. La raison pour laquelle j'ai été bloqué était parce que ces plugins peuvent facilement être modifiés ou étendus en ruby ​​en raison des fonctionnalités du langage, et la ligne entre le plugin et le code personnalisé a commencé à se brouiller pour moi. – Anurag

+0

@Anurag cela peut devenir confus. Encore plus déroutant, si vous écrivez du code pour * votre * application, vous le gardez dans le répertoire 'app'. Si vous modifiez la façon dont le * core plugin * agit, vous placez normalement ces changements dans 'lib' en suivant un modèle de nommage de dossier/fichier spécial afin que le plugin puisse toujours être mis à jour depuis la source, et vos changements soient séparés. –

1

Tout ce que vous écrivez doit figurer dans les répertoires standard. Utiliser le fournisseur pour le code fourni par le fournisseur.

1

Tout comme un heads-up, il est très difficile de se tromper en regardant des émissions sur les sujets que vous êtes nouveau.

Bates Ryan a deux couvrant authlogic et authlogic with OpenID et en prévision de votre prochaine étape après autorisation authentication-: Il a un certain contrôle d'accès couvrant ainsi: Declarative Authorization et CanCan.

Questions connexes