2010-08-04 4 views
2

J'ai des caractéristiques que je voudrais être portable entre mes propres applications de Rails.Créer des plugins ou des gemmes pour Rails 3?

Je me demande si je devrais créer une gemme ou un plugin pour chaque fonctionnalité que je veux être portable (partageable).

Ils sont juste pour Rails (pour l'instant) car ils incluent les fichiers css, html, js et image.

Mais je me demandais, les choses fournies avec des plugins pourraient être fournis avec des gemmes aussi, mais pas le contraire? Alors peut-être que c'est mieux d'apprendre à créer des gemmes, parce que vous n'avez pas à apprendre comment créer des gemmes et des plugins? Et les gemmes semblent être plus populaires ces jours-ci.

Mais alors, à partir de ce que je peux comprendre une gemme est partagée entre toutes les applications de rails dans le système d'exploitation. Cela signifie donc que je ne peux pas le personnaliser pour chaque application Rails, n'est-ce pas? Dans ce cas, la création d'un plugin est peut-être préférable car il devrait permettre de personnaliser (éditer css, js etc) chaque fonctionnalité et de l'enregistrer dans l'application Rails elle-même et non dans le système d'exploitation.

Quelques conseils seraient appréciés!

MISE À JOUR:

Alors bijou fonctionne très bien avec css, html, fichiers js et image? Dans un plugin, je pense que vous pouvez avoir un MVC, vos propres modèles, vues et contrôleurs. Extrait des guides Rails "Stocker des modèles, des vues, des contrôleurs, des assistants et même d'autres plugins dans vos plugins". Est-ce possible dans un bijou? Par exemple. Je veux ajouter une extension qui me donne un joli panier d'achat (avec migrations propres, mvc, fichiers d'actifs) qui sera accroché dans l'application Rails actuelle. Est-ce possible comme gem ou seulement comme plugin?

Répondre

2

Vous avez raison de dire que les gemmes offrent un peu plus que des plugins. Versioning et les dépendances sur d'autres gemmes étant les principales pour moi.

Une gemme n'a pas besoin d'être partagée à travers tout en utilisant ruby. Vous pouvez installer plusieurs versions d'une seule gemme et spécifier dans votre environment.rb qu'une gemme nécessite une version spécifique. Par exemple.

config.gem 'my-gem', :version => '1.2.3' 

vous pouvez également geler les pierres précieuses dans votre application rails afin que vous savez que vous travaillez avec une version spécifique.

Vous pourriez vouloir regarder le jeweler gem qui facilite la création de vos propres gemmes.

MISE À JOUR

Pour inclure CSS, javascript, etc. Je pense que vous aurez besoin de faire un moteur Rails qui peut alors être empaqueté comme un plug-in ou un bijou. Je n'ai pas fait cela mais il y a une certaine couverture here et here.

+0

qui pointent vers la pierre précieuse de bijouterie semble être rompu: http://github.com/technicalpickles/jeweler –

+0

S'il vous plaît voir mon post mise à jour. –

+1

J'ai corrigé le lien du bijoutier. À votre santé. – Shadwell

2

La poussée avec Rails 3 semble être vers les gemmes et loin des plugins car beaucoup de soutien a été ajouté pour que les gemmes fonctionnent aussi bien ou mieux que les plugins. Une gemme bien construite est une bonne chose à avoir et à partager entre différentes applications, et réduit également la quantité de tests que vous aurez à faire puisque vous pouvez tester la gemme à fond avant l'intégration. Pour les extensions de Rails qui utilisent CSS, HTML et d'autres actifs, il se peut que vous deviez construire un moteur pour regrouper tout cela et lui permettre de s'intégrer parfaitement dans une application.

+0

"vous avez besoin de construire un moteur pour rassembler tout cela". Que voulez-vous dire par moteur? Vous voulez dire que les moteurs Rails (aka une application rails dans une application rails) que vous pourriez construire avec Engineer? –

+0

Ce genre de chose, oui. Il y a beaucoup de façons de les construire, comme il y a des gemmes. Voici un site qui contient de la documentation et des exemples: http://rails-engines.org/ – tadman

Questions connexes