2013-01-22 4 views
6

Mi sono appena iscritto a un progetto di sviluppo di un motore di rotaie, che ha anche un'app fittizia per il test.Come gestire le migrazioni per un motore di rotaie + fittizio

foo/ 
foo/spec/dummy/ 

ci sono le migrazioni identici in

foo/db/migrate/ 
foo/spec/dummy/db/migrate/ 

Se rake db:migrate dalla app fittizio, va tutto bene. Se faccio lo stesso dal motore (directory corrente = pippo) ottengo un errore su più migrazioni con lo stesso nome.

Q1) I Rakefiles sono puntati? (dovrebbe db:migrate ricorrere all'app dummy?)

Q2) Le migrazioni dovrebbero essere solo in una directory? Se sì, quale?

Utilizziamo Rails 3.2.9, ruby ​​1.9.3p194.

risposta

7

Domanda 1
Il Rakefile dovrebbe avere una voce per tenere conto della spec/app manichino. Ad esempio,

Bundler::GemHelper.install_tasks 
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) 
load 'rails/tasks/engine.rake' 

Ecco più dettagliata ad esempio rakefile, https://github.com/twinge/questionnaire_engine/blob/engine2/Rakefile

Domanda 2
IMO, le migrazioni dovrebbero esistere solo sulla foo/cartella db/migrate, e non foo/spec/dummy/db/migrate. In realtà, io non controllo la versione del dummy db/migrate o il db/schema.

Perché? Uso l'app fittizia per assicurarmi che l'installazione completa del mio motore funzioni al 100%. Pertanto, se la versione di I controlla foo/spec/dummy db state, verificherei come se ci fosse un'installazione precedente.

Esempio motore
https://github.com/twinge/questionnaire_engine/tree/engine2