加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

跟踪Rails 3 SQL查询

发布时间:2020-12-12 16:38:41 所属栏目:MsSql教程 来源:网络整理
导读:有没有任何宝石可以在Rails 3上工作,可以显示我的代码生成哪个SQL查询的哪一部分? 在Rails 2.3上有一个名为query_trace的插件,但它似乎不适用于Rails 3,它会生成以下错误: alias_method': undefined method `log_info' for class `ActiveRecord::Connection
有没有任何宝石可以在Rails 3上工作,可以显示我的代码生成哪个SQL查询的哪一部分?

在Rails 2.3上有一个名为query_trace的插件,但它似乎不适用于Rails 3,它会生成以下错误:

alias_method': undefined method `log_info' for class `ActiveRecord::ConnectionAdapters::AbstractAdapter' (NameError)

解决方法

QueryTrace不按原样工作,因为在Rails 3 esp中,在ActiveRecord区域进行了许多更改.

所以,黑客,我这样做的工作:

您只需要在所提及的位置下面的2个文件.然后重新启动Web服务器.
在SQL之后,您应该在控制台(品红色白色)和日志文件中看到Called from:

在/vendor/plugins/query_trace/lib/query_trace.rb中

module QueryTrace
  def self.append_features(klass)
    super
    klass.class_eval do
      unless method_defined?(:log_info_without_trace)
        alias_method :log_info_without_trace,:sql
        alias_method :sql,:log_info_with_trace
      end
    end
  end

  def log_info_with_trace(event)
    log_info_without_trace(event)
    logger.debug("e[1me[35me[1me[47mCalled from:e[0m " + clean_trace(caller[2..-2]).join("n "))
  end

  def clean_trace(trace)
    Rails.respond_to?(:backtrace_cleaner) ?
      Rails.backtrace_cleaner.clean(trace) :
      trace
  end
end

在/vendor/plugins/query_trace/init.rb中

require 'query_trace'

class ::ActiveRecord::LogSubscriber
  include QueryTrace
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读