Es gibt mehrere Möglichkeiten, eine Rails-Anwendung zu erweitern und/oder eine neue zu starten. Sie haben nur eine der vier großen Möglichkeiten erwähnt. Die anderen sind:
- Plugins
- Motoren
- Edelsteine
- Schablonen
Vorlagen werden in der Regel für den Start einer Anwendung verwendet, aber wenn sie richtig gestaltet sind, können Sie sie auch zur Erweiterung einer Anwendung nutzen. Viele Standardvorlagen helfen beispielsweise dabei, ein Code-Repository einzurichten, ein paar Plugins zu installieren und vielleicht das Layout ein wenig zu überarbeiten, damit Sie es nicht tun müssen. Natürlich werden Sie das meiste davon tun, wenn Sie ein Projekt zum ersten Mal starten. In unserer Firma (3 Entwickler) habe ich eine Vorlage erstellt, die unsere Entwicklungs- und Produktionsumgebungen, Repositories und Projektverfolgung einrichtet. Hier ist meine Lieblingsvorlage: http://github.com/lhoeg/app_lego/network (Das Original wurde schon lange nicht mehr überarbeitet, und ich glaube, dass dies die beste Gabel ist, die es derzeit gibt)
Plugins und Gems sind mehr oder weniger zu Synonymen geworden und es gibt kaum noch einen Grund für Leute, Plugins zu erstellen, da Gems eher der Ruby-Standard sind, um Funktionalität zu verpacken. Im Allgemeinen verwendet man Plugins, um seiner Anwendung einige sehr spezifische Funktionen hinzuzufügen. Das kann von der Benutzerauthentifizierung über Kalenderfunktionen bis hin zum Hinzufügen von Standorten und Kartenmaterial reichen. Die meisten Plugins, die ich verwendet habe, erweitern den ActiveRecord- oder Datenbankteil der Anwendung. Wenn das Plugin mit Views, Controllern kommt oder Ihre Datenbanktabellen modifiziert, wird es normalerweise mit einem Generator geliefert. Ein gutes Beispiel ist der Generator des Restful Authentication-Plugins. Eine relativ gute Liste von http://agilewebdevelopment.com/
Motoren sind die Könige der Modularität. Sie bieten normalerweise viel mehr Funktionalität als Plugins. Während Plugins und Gems im Allgemeinen Rails selbst erweitern, zielen Engines darauf ab, IHRE Anwendung zu erweitern, indem sie einen vollständigen Satz von Ansichten, Controllern und Modellen hinzufügen. Engines sind also ganze Rails-Anwendungen, die in einer kleinen Schachtel verpackt sind, die Sie einfach in Ihre Anwendung einbauen können und sofort eine Reihe von Funktionen hinzufügen können. Es gibt auch ein Engines-Verzeichnis unter http://agilewebdevelopment.com/ aber wie Sie sehen werden, sind es nicht sehr viele.
Ich hoffe, das hilft!
Berns