【问题标题】:Log every SQL query to database in Rails 3在 Rails 3 中记录每个 SQL 查询到数据库
【发布时间】:2011-05-19 00:05:49
【问题描述】:

这个问题是这个question 的后续问题,我应该把这个代码放在哪里?

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 查询时会发生什么,然后它返回“stack level is to deep”错误。

【问题讨论】:

    标签: sql ruby-on-rails logging


    【解决方案1】:

    把它放在 config/initializers 中。很可能是因为每次在开发环境中重新加载类。这段代码只需要执行一次。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多