2010-04-14 3 views
6

C'è un modo semplice per vedere l'effettivo SQL generato da una migrazione di rotaie?Modo di visualizzare Rails Uscita di migrazione

Ho una situazione in cui una migrazione per modificare un tipo di colonna ha funzionato sul mio computer di sviluppo locale parzialmente non riuscita sul server di produzione.

Le mie versioni di postgreSQL sono diverse tra locale e produzione (7 in produzione, 8 in locale) quindi spero guardando l'SQL generato in caso di migrazione riuscita localmente posso elaborare un'istruzione SQL da eseguire su produzione correggere le cose ....

risposta

3

ho fatto qualche ricerca e ho trovato un altro modo questo può essere realizzato anche ... (In questo modo si dà solo l'SQL quindi è stato un po 'più facile per me leggere)

Postgresql registrerà tutte le query eseguite se metti questa riga nel file di configurazione: (c'è un esempio che è stato commentato nella sezione "Cosa log" del file di configurazione)

log_statement = 'all' 

Poi ho rotolato indietro e ri-passai la migrazione a livello locale per trovare l'SQL che stavo cercando.

Questo metodo fornisce anche l'SQL in un formato in cui è possibile incollarlo facilmente in qualcosa come il generatore di query di PGAdmin e gingillarsi con esso.

+0

Grazie per questo. Sono sorpreso che non ci sia un modo nativo per farlo. –

6

Esaminare i file di registro: log/development.log localmente vs log/production.log sul server.

+0

Grazie Francois! Il tuo suggerimento ha funzionato bene ma ho avuto qualche problema in quanto il mio file di log era ENORME e un po 'difficile da analizzare ... Tuttavia, mi hai ricordato qualcosa che avevo letto qualche tempo fa sul file di log di PostgreSQL e ho finito per trovare una soluzione che quello che stavo cercando. +1 –

0

È possibile impostare il registratore su STDOUT nella parte superiore dei metodi di migrazione change, up o down. Esempio:

class SomMigration < ActiveRecord::Migration 
    def change 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 

    # ... 
    end 
end 

O vedere this answer per l'aggiunta di registrazione SQL per tutte le attività di rake