2010-11-04 3 views

Antwort

33

Sie können eine Rake Aufgabe in lib/tasks/ erstellen:

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 

Dann rake db:migrate_with_sql rufen Sie die Migration zu protokollieren.

+1

'ActiveRecord :: Base.logger = Logger.new (STDOUT)' ist die Magie, eine bestimmte Migration zum Laufen zu bekommen, beinhaltet nur das Setzen des Loggers vorher :) –

66

Aufbauend auf @qarol aber noch viel cooler, fügen Sie diesen Rake Aufgabe an einen Ihrer Rake-Dateien:

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

Dazu ANY Rake Aufgabe aufrufen können und die Ausgabe protokolliert:

rake log db:migrate 
+0

Sie können dies verwenden: ActionMailer :: Base .logger = ActiveRecord :: Base.logger = Logger.new (STDOUT) um die Mailerausgabe zu erhalten. – Josh

+5

Das hat gut funktioniert und ist viel generischer. Es sollte die akzeptierte Antwort sein. –

+0

Einverstanden, das ist ein fantastischer Tipp. – bonh

6

Die SQL-Ausgabe wird z. B. in Ihrer Umgebungsprotokolldatei erfasst development.log

Verwandte Themen