Meine Rails-Apps (Zusammenstellung von Rails 3 und 4) haben alle ihre eigene Datenbank (natürlich), greifen aber auch auf eine Datenbank von Drittanbietern zu. Als solche haben sie Modelle zu dieser 3rd-Party-Datenbank. Ich möchte diese Modelle als wiederverwendbar konfigurieren, anstatt sie in jede App kopieren zu können. Es gibt keine zu berücksichtigenden Controller, Helfer oder Routen. nur Modelle. Aber da es Rails "Teile" hat, würde dies darauf hinweisen, dass ich einen Motor brauche. Aber die Tatsache, dass ich diese Modelle in all meinen Apps habe, scheint darauf hinzudeuten, dass ich nur ein "normales" Rails-kompatibles Juwel brauche."Reguläre" Ruby Gem oder Rails Engine?
Wäre es besser, dies als Edelstein oder als Rails-Motor zu tun?
Wenn ein Motor besser ist, bin ich mir nicht sicher, wo ich anfangen soll. Aus einigen der Anleitungen, die ich gelesen habe, scheint es, als ob Sie in einer neuen Rails-Anwendung eine Engine erstellen. Ich bin auch etwas unklar auf full
vs. mountable
, aber ich weiß, dass ich diese Modelle in ihrem eigenen Namespace mögen würde.
Schließlich möchte ich diese Modelle in allen meinen Apps nutzbar machen. Engines kann als Edelstein verpackt werden, richtig? Wenn ja, könnte ich nicht einfach als Juwel beginnen, anstatt als Engine in einer bestimmten App zu starten und dann den Edelstein im Nachhinein zu exportieren?
Ich bin ziemlich verwirrt, so dass jede Rückmeldung geschätzt wird. Ich habe auch noch nie zuvor ein Juwel oder einen Motor gebaut, also verzeiht bitte jede Dummheit in diesem Bereich.
Warum zeigt nichts anderes als Modelle an, dass Sie einen Motor brauchen? In jedem Fall, was "besser" ist, hängt davon ab, und der Rest ist furchtbar breit. Könnte es sinnvoll sein, mit etwas wie http://edgeguides.rubyonrails.org/engines.html zu beginnen und sehr spezifische Fragen zu stellen? –
@DaveNewton: Entschuldigung, ich meinte das, weil es * irgendwelche * Rails "Teile" hatte, scheint es (für mich), dass es eine Engine sein sollte. – istrasci
Vielleicht, obwohl ich nicht sicher bin, warum das sein würde.Wenn es ein Gem ist, können Sie es auch außerhalb von Rails verwenden (z. B. Kommandozeile util usw.), also tendiere ich dazu. –