Simile al "server dei rails" che stampa ogni query sql eseguita, vorrei fare lo stesso per le attività di rake.È possibile registrare query SQL su attività rake?
Qual è il modo migliore per farlo?
Simile al "server dei rails" che stampa ogni query sql eseguita, vorrei fare lo stesso per le attività di rake.È possibile registrare query SQL su attività rake?
Qual è il modo migliore per farlo?
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
echo '' > log/development.log
rake db:migrate:redo VERSION=20141017153933
cat log/development.log
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.
Eventuali duplicati: is it possible to output the sql change scripts that rake db:migrate produces?
Ci sono alcune buone opzioni là. La mia preferita ovviamente è la mia risposta.
ah, vedo che sono in development.log, grazie – mbdev