2010-01-15 9 views
17

Come sviluppatore di Rails, mi sento un po 'stupido a fare questa domanda, ma spero di imparare qualcosa di nuovo e qualcuno mi può mettere fuori dalla mia miseria! Nelle mie applicazioni su rotaie uso sempre gemme (di altre persone), uso anche plugin della comunità o miei.Costruire una gemma di rubini per le applicazioni di Rails

Comprendo i vantaggi dell'utilizzo di gemme su plug-in in quanto sono in grado di eseguire versioni, segmentare, sistemare, gestire e condividere in modo semplice ecc., Ma non so davvero come realizzare una gemma per le mie app di rotaie !?

Iniziamo sempre con un plug-in e lo convertiamo in un gioiello, ho visto le parole "impacchettarlo come gemma". Anche la gemma che sto pensando di costruire non andrebbe bene in un normale programma di rubini, è utile solo per le app di rotaie. Non sono nemmeno sicuro se la semantica di questo abbia senso, 'RubyGem' che funzionerà solo in un'applicazione di rotaie !?

Mi piacerebbe creare un gioiello (se è quello che dovrei usare?) Per una discreta funzionalità per le mie app di rotaie. Sarà necessario aggiungere una migrazione del database, nuovi percorsi e fornire controllori e viste o utili helper per la visualizzazione. Sono sicuro di poter ottenere questo risultato tramite un plug-in, ma vorrei sapere come/perché farlo come "Ruby Gem"?

risposta

7

Per evitare il rischio di sovra-ingegnerizzazione, di solito inizio con la funzionalità di cui ho bisogno direttamente nell'applicazione. Quindi, non appena ho bisogno di utilizzare la stessa funzionalità in un altro progetto, controllo se vale la pena di estrarlo in un plug-in o anche in un'applicazione separata che fornisce un'API.

I plugin e le gemme sono spesso intercambiabili. Le gemme offrono numerosi vantaggi significativi in ​​termini di riusabilità e manutenibilità. Dall'altro lato, ci sono alcuni problemi noti specifici. Ad esempio, un'applicazione Rails non può in realtà caricare attività rake definite in un plug-in impacchettato come Gem.

Quasi tutti i plug-in Rails possono essere impacchettati come Gem. Ad esempio, prendi il mio plug-in tabs_on_rails.

È possibile installarlo come gemma specificando la dipendenza da environment.rb. Oppure puoi usare il comando script/plugin install come ti aspetteresti.

Se si desidera ottenere lo stesso risultato, assicurarsi di seguire il layout Gem standard e fornire lo script di inizializzazione init.rb richiesto da Rails. Inoltre, è possibile creare un file install.rb e uninstall.rb per includere i ganci di post-installazione e post-disinstallazione quando il plug-in è installato come plug-in standard di Rails.

Ultimo ma non meno importante, se si configura un plug-in come Gem, è possibile riutilizzarlo in progetti non Rails e fornire inizializzazioni specifiche di Rails utilizzando il file init.rb. Le applicazioni non Rails lo ignoreranno semplicemente.

+0

si può risolvere l'URL al vostro plugin tabs_on_rails? –

+0

corretto! Grazie. –

+0

@SimoneCarletti - "L'app Rails in realtà non può caricare attività rake definite in un plug-in impacchettato come un gioiello" - Non penso che sia ancora vero .. – Yarin

2

Dai uno sguardo allo Jeweler. Jeweler ti offre una serie di compiti di rastrello per rendere la versione delle gemme e la creazione molto semplici.

Problemi correlati