2011-11-23 91 views

回答

14

根據您的環境,耙將記錄SQL查詢,就像任何Rails的進程將在同一日誌文件&。因此,在你的開發盒中,檢查你的log/development.log文件 - 它將包含你的Rake任務的查詢。如果您希望在生產中記錄查詢,請將Rake任務中的日誌級別設置爲DEBUG,並確保rake任務取決於:environment。

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

啊,我看到他們在development.log,謝謝 – mbdev

4
rake db:migrate --trace 

的--trace將顯示詳細信息

+0

它不顯示SQL語句 – Aleksey

+0

'尾-f登錄/ test.log'應該做的伎倆在另一個終端窗口 – drhenner

+0

那麼它應該是答案不是'--trace' – Aleksey

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

我試過以上,無法得到它的工作。語法很好,沒有錯誤,但沒有SQL來到標準輸出(或日誌)。我正在使用rails 3.2。我也在生產環境中運行。

要看到我的rake任務生成的SQL查詢,我曾經在http://eewang.github.io/blog/2013/07/29/how-to-use-rake-tasks-to-generate-migration-sql/

尤其是發現的技術,我剛插入此塊在我的任務查找()之前生成的SQL查詢我聲明間諜在:

ActiveRecord::Base.connection.class.class_eval do 
    # alias the adapter's execute for later use 
    alias :old_execute :execute 

    # define our own execute 
    def execute(sql, name = nil) 
     print "===== #{sql}\n" 
     old_execute sql, name 
    end 
    end 

然後,我可以看到標準輸出上的SQL。這不是我的代碼 - 尤金王提出了這種技術。

相關問題