有没有任何宝石可以在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[1m\e[35m\e[1m\e[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