O /tasks
e lib/tasks
sono un buon posto. Io uso /tasks
quando le attività sono destinate a essere utilizzate per lavorare o gestire la gemma stessa, io uso lib/tasks
quando le attività devono essere caricate dagli utenti Gem.
Questo perché gli utenti potrebbero avere qualche problema nel caricamento di file ruby al di fuori della cartella lib
che viene automaticamente aggiunta al percorso di caricamento quando è richiesta la gemma.
Inoltre, suggerisco di utilizzare l'estensione * .rake. Oggigiorno quasi ogni IDE associa l'estensione .rake
ai file ruby e l'IDE più avanzato può persino analizzare il contenuto come script di rake. L'estensione .rake
è una scelta migliore anche per gli sviluppatori perché è possibile fornire una panoramica immediata del contenuto all'interno del file.
Sulla tua seconda domanda, al momento non c'è modo di avere Rails che carica le tue attività di rake quando il plugin è impacchettato come Gem. Devi includere il file rake nella tua applicazione (in un altro file rake o nel Rakefile principale) o clonare le attività rake nel tuo progetto.
Se si installa il plug-in nella cartella del fornitore, tutti i file *.rake
in entrambe le attività e le directory lib/tasks vengono caricati automaticamente nello scope Rails dalle seguenti due righe.
Dir["#{RAILS_ROOT}/vendor/plugins/*/tasks/**/*.rake"].sort.each { |ext| load ext }
Dir["#{RAILS_ROOT}/vendor/plugins/*/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
fonte
2009-12-10 08:52:29
Se dovessi continuare a cercare una risposta migliore, colpisco la mia testa sul muro quando cerco di far funzionare anche facebooker, che è disponibile come gemma, ma non funziona perché tutte le dipendenze tra le attività del rake sono praticamente esaurite. –
questo mi ha aiutato: http://blog.nathanhumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html – User