2009-06-04 11 views
13

Recentemente ho aggiunto alcune funzioni SQL al mio database tramite una migrazione e funzionano perfettamente bene. Il codice funziona, il database funziona, i test no. Il file schema.rb mi dice che è alla versione più recente (ed è corretto), ma contiene solo definizioni per tabelle e indici, non le funzioni che ho aggiunto.Perché il rake db: migrare in Rails non aggiunge funzioni al file dello schema?

Ho aggiunto le funzioni tramite il metodo "execute()" nella mia migrazione e ho bisogno di esse nel database di test per il test di RSpec per passare (la politica aziendale impone che non posso eseguire questo cambiamento finché non viene corretto) .

Qualcuno sa perché questo sta accadendo o come risolverlo? Posso andare manualmente nella riga di comando di MySQL e aggiungere le funzioni, ma poi vengono cancellate la prossima volta che qualcuno fa un db: test: preparare. Ho bisogno di una soluzione che possa essere automatizzata.

Grazie per qualsiasi aiuto e risposte,

-Mike Trpcic

risposta

12

schema.rb è il formato dello schema Ruby e non supporta funzioni o molte altre funzioni più avanzate. Cambia il formato in semplice SQL (in environment.rb) e dovresti essere pronto.

config.active_record.schema_format = :sql 

Edit: Dopo il commento di Mike, ho fatto un po 'di scavo. L'attività Rake per scaricare le chiamate dello schema nell'adattatore di connessione ActiveRecord per MySQL e Oracle. MySQL non è molto intelligente e scarica solo la struttura della tabella, ignorando tutto il resto. PostgreSQL, SQLite, SQL Server e Firebird chiamano un eseguibile fornito dal fornitore.

mysqldumpdoesn't support dumping stored procedures prima della versione 5.0.13.

Mi sono guardato intorno al Faro di Rails, ma cercare i biglietti aperti è molto più difficile di quanto dovrebbe essere. Se nessun altro ha presentato un bug su questo, potresti prendere in considerazione di farlo, anche se senza una patch, non è probabile che qualcuno ci lavorerà sopra.

+1

Steve, hai trovato tutte le informazioni che non potevo. Grazie mille, è bello avere finalmente una risposta. –

+0

Preferisco guardare il: formato rubino. Vorrei che ci fosse un modo per specificare migrazioni specifiche da eseguire automaticamente ogni volta che il database si carica da schema.rb. –

Problemi correlati