2010-11-04 73 views

回答

33

可以在lib/tasks/創建一個Rake任務:

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 

然後調用rake db:migrate_with_sql登錄遷移。

+1

'ActiveRecord :: Base.logger = Logger.new(STDOUT)'是神奇的,獲得一個特定的遷移運行只涉及設置記錄器之前:) – 2016-02-07 09:12:59

66

大廈@qarol但更酷,這Rake任務添加到您的Rake文件之一:

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

然後就可以調用任何任務,並有記錄的輸出:

rake log db:migrate 
+0

你可以使用這個:ActionMailer :: Base .logger = ActiveRecord :: Base.logger = Logger.new(STDOUT)以獲得郵件程序輸出。 – Josh 2011-12-01 02:55:11

+5

這工作很好,更通用。它應該是被接受的答案。 – 2014-02-04 17:15:28

+0

同意,這是一個奇妙的提示。 – bonh 2014-10-31 19:43:54

6

SQL輸出被捕獲在您的環境日誌文件中,例如development.log

相關問題