2010-01-15 4 views
17

En tant que développeur Rails, je me sens un peu stupide de poser cette question mais j'espère apprendre quelque chose de nouveau et quelqu'un peut me sortir de ma misère! Dans mes applications de rails, j'utilise des gemmes (d'autres personnes) tout le temps, j'utilise aussi des plugins de la communauté ou les miens. Je comprends les avantages de l'utilisation des gemmes sur les plugins car ils sont versionnables, segmentés, système, plus facile à gérer et à partager, etc etc mais je ne sais pas vraiment comment faire une gemme pour mes applications rails !?Construire une gemme ruby ​​pour les applications Rails

-vous toujours commencer par un plug-in et le convertir en un bijou, je l'ai vu de paquet comme Gem "les mots. Aussi la gemme que je pense construire ne serait pas bonne dans un programme normal de rubis, elle est seulement utile pour les applications de rails. Je ne suis même pas sûr si la sémantique de ce sens, 'RubyGem' qui ne fonctionnera que dans une application de rails?

Je voudrais créer un bijou (si c'est ce que je devrais utiliser?) Pour un morceau discret de fonctionnalité pour mes applications Rails. Il faudra ajouter une migration de base de données, de nouvelles routes et fournir des contrôleurs et des vues ou des aides de vue utiles. Je sais que je peux y parvenir via un plug-in, mais je voudrais juste savoir comment/pourquoi le faire en tant que 'Ruby Gem'?

Répondre

7

Pour éviter le risque de sur-ingénierie, je commence généralement avec la fonctionnalité dont j'ai besoin directement dans l'application. Ensuite, dès que j'ai besoin d'utiliser la même fonctionnalité dans un autre projet, je vérifie s'il vaut la peine de l'extraire dans un plugin ou même une application séparée fournissant une API.

Les plugins et les gemmes sont souvent interchangeables. Gems offre plusieurs avantages significatifs en termes de réutilisabilité et de maintenabilité. D'un autre côté, il y a un problème spécifique connu. Par exemple, une application Rails ne peut pas charger les tâches de rake définies dans un plugin emballé en tant que Gem. Presque tous les plugins Rails peuvent être empaquetés comme un Gem. Par exemple, mon plugin tabs_on_rails.

Vous pouvez l'installer en tant que Gem en spécifiant la dépendance à environment.rb. Ou vous pouvez utiliser la commande script/plugin install comme vous pouvez vous y attendre.

Si vous souhaitez obtenir le même résultat, veillez à suivre la disposition Gem standard et fournissez le script d'initialisation init.rb requis par Rails. En outre, vous pouvez créer un install.rb et uninstall.rb fichier pour inclure le post-installation et crochets post-désinstallation lorsque le plug-in est installé comme un plugin standard Rails. Last but not least, si vous empaquetez un plugin comme Gem, vous pouvez le réutiliser dans des projets non Rails et fournir des initialisations spécifiques à Rails en utilisant le fichier init.rb. Les applications non-Rails l'ignoreront simplement.

+0

Pouvez-vous fixer l'URL de votre plugin tabs_on_rails? –

+0

Fixe! Je vous remercie. –

+0

@SimoneCarletti - "L'application Rails ne peut pas charger les tâches de rake définies dans un plugin emballé comme un Gem" - Je ne pense pas que ce soit encore vrai .. – Yarin

2

Jetez un oeil à Jeweler. Le bijoutier vous donne un ensemble de tâches de rake pour rendre la version et la construction de gem très facile.

Questions connexes