2011-11-23 9 views

risposta

14

seconda dell'ambiente, Rake registrerà query SQL come ogni processo di Rails sarà & nello stesso file di log. Quindi, sulla tua casella di sviluppo, controlla il file log/development.log - conterrà le query della tua attività Rake. Se si desidera che le query registrate in produzione, impostare il livello di registro nella propria attività Rake su DEBUG e assicurarsi che l'attività di rake dipenda da: environment.

desc "Task with SQL logging" 
task :test_log => :environment do 
    Rails.logger.level = Logger::DEBUG 
    Your code here... 
end 
+3

ah, vedo che sono in development.log, grazie – mbdev

4
rake db:migrate --trace 

Il --trace mostrerà i dettagli

+0

non mostra istruzioni SQL – Aleksey

+0

'tail -f log/test.log' dovrebbe fare il trucco in un'altra finestra di terminale – drhenner

+0

quindi dovrebbe essere la risposta non' --trace' – Aleksey

3
echo '' > log/development.log 
rake db:migrate:redo VERSION=20141017153933 
cat log/development.log 
0

ho provato quanto sopra e non poteva farlo funzionare. La sintassi andava bene, nessun errore, ma nessun sql arrivava allo stdout (o al log). Sto usando le rotaie 3.2. Sto anche correndo in un ambiente di produzione.

Per vedere le query SQL generate dai miei compiti rake, ho usato la tecnica trovato alla http://eewang.github.io/blog/2013/07/29/how-to-use-rake-tasks-to-generate-migration-sql/

In particolare, ho appena installato un blocco nel mio compito prima che il find() le dichiarazioni che hanno generato le query SQL ero intersecato in:

Quindi ho potuto vedere l'SQL su stdout. Questo non è il mio codice: Eugene Wang ha inventato questa tecnica.

Problemi correlati