2010-12-02 1 views
2

この質問は、このquestionのフォローアップです。すべてのSQLクエリをRails 3のデータベースに記録してください。

connection = ActiveRecord::Base.connection 
class << connection 
    alias :original_exec :execute 
    def execute(sql, *name) 
    # try to log sql command but ignore any errors that occur in this block 
    # we log before executing, in case the execution raises an error 
    begin 
     file = File.open(RAILS_ROOT + "/log/sql.txt",'a'){|f| f.puts Time.now.to_s+": "+sql} 
    rescue Exception => e 
     ; 
    end 
    # execute original statement 
    original_exec(sql, *name) 
    end 
end 

私はモデルの内側に配置しようとしたが、私はそれが返すエラー「スタックレベルが深いにある」一度、その後いくつかのSQLクエリの詳細を実行したときに何が起こることですしています。

答えて

2

config/initializersに入れます。ほとんどの場合、dev envで毎回クラスをリロードするためです。このコードは一度だけ実行する必要があります。

関連する問題