Questo post è stato utilizzato come riferimento da un mio collega, ma le due risposte non sono esatte o sufficientemente informative.
development_structure.sql è un dump di livello basso dello schema, necessario quando si iniziano a utilizzare le funzionalità del database proprietario: se lo si desidera o meno, le si utilizzerà a un certo punto.
Riguardo alla questione di archiviarlo o meno, c'è un po 'di dibattito. Ecco un post informativo: http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/. E la mia opinione su questo segue.
L'obiettivo di development_structure.sql è di sincronizzare, per ogni dato commit, la struttura del database con il codice, senza avere una precedente conoscenza della struttura dello schema, cioè senza dover fare affidamento su uno stato preesistente di lo schema per ottenere quello nuovo.
In breve, avendo una struttura dello schema disponibile, ogni volta che si modifica branch/commit, lo si carica direttamente e lo si dimentica. Questo è principalmente valido per progetti dinamici e "affollati", in cui diversi rami presentano differenze nella struttura dello schema sottostante.
Senza avere memorizzata la struttura dello schema, è necessario utilizzare sempre uno schema di riferimento esistente nel database e migrarlo avanti o indietro ogni volta che si cambia ramo/commit; diversi casi reali possono rendere questo processo inefficiente (ad esempio quando un altro ramo non ha alcune migrazioni attualmente disponibili o non è possibile eseguire il rollback di alcune migrazioni).
Un altro problema sono le build automatizzate, che soffrono degli stessi problemi e, peggio ancora, non possono applicare le modifiche manuali.
L'unico svantaggio è che richiede una certa abitudine, vale a dire memorizzarla ogni volta che si esegue una migrazione. Facile da dire, ma anche facile da dimenticare.
Non dico che non puoi vivere senza development_structure.sql - certo che puoi. Ma se ce l'hai, quando cambi ramo/impegni ti basta caricare e dimenticare; se non lo fai, potresti [dover] passare attraverso una serie di passaggi manuali.
è la stessa cosa di structure.sql in rails 3? In tal caso, questa domanda deve essere modificata –
@boulder_ruby yes –