2010-11-04 3 views

Répondre

33

Vous pouvez créer une tâche de râteau dans lib/tasks/:

namespace :db do 
    desc 'Make migration with output' 
    task(:migrate_with_sql => :environment) do 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
    Rake::Task['db:migrate'].invoke 
    end 
end 

appeler ensuite rake db:migrate_with_sql pour se connecter à la migration.

+1

'ActiveRecord :: Base.logger = Logger.new (STDOUT)' est la magie, l'exécution d'une migration particulière implique simplement la configuration préalable de l'enregistreur :) –

66

bâtiment sur @qarol mais encore plus cool, ajoutez cette tâche Rake à un de vos fichiers Rake:

task :log => :environment do 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
end 

Ensuite, vous pouvez appeler TOUT tâche Rake et que la sortie connecté:

rake log db:migrate 
+0

Vous pouvez utiliser ceci: ActionMailer :: Base .logger = ActiveRecord :: Base.logger = Logger.new (STDOUT) pour obtenir la sortie mailer aussi. – Josh

+5

Cela a fonctionné très bien et est beaucoup plus générique. Cela devrait être la réponse acceptée. –

+0

D'accord, c'est un conseil fantastique. – bonh

6

La sortie SQL est capturée dans votre fichier journal d'environnement, par exemple development.log

Questions connexes