Started GET "/login" for 127.0.0.1 at Thu Sep 27 18:59:08 -0500 2012
Processing by PublicController#index as HTML
(40.9ms) SELECT COUNT(*) FROM "studies"
(49.6ms) SELECT COUNT(DISTINCT "activities"."whodiddit") FROM "activities"
(35.3ms) SELECT COUNT(*) FROM "involvements"
我猜这就是你的数百个SQL查询发生的地方?
Rendered partials/_faq.haml (6.1ms)
Rendered public/index.html.haml within layouts/public (114.3ms)
Completed 200 OK in 595ms (Views: 276.7ms | ActiveRecord: 151.6ms)
最后的as HTML位告诉您请求是什么格式,因此响应中可能使用哪个视图/格式。 因此,这基本上告诉您,SQL查询是作为PublicController中index操作的一部分触发的,或者是作为触发此操作的结果,控制器呈现的视图之一触发的。 1.如果要解析的内容太多,可以使用debugger命令在不同的点停止输出,并允许您检查正在发生的事情。 1.您可以使用Rails.logger.info "My info message"或Rails.logger.error "My error message"(取决于您是否希望它出现在默认日志或错误日志等)直接在应用日志中输出内容。
3条答案
按热度按时间zf9nrax11#
https://github.com/lightyear/sql-logging为每个SQL查询提供了回溯,并提供了一系列有用的统计信息。
k2arahey2#
你有几个选项,这些选项都不会像Ruby对错误进行回溯那样提供回溯,但它们会提供你所需的工具和信息,让你准确地追踪SQL查询的来源。
1.典型的Rails日志条目如下所示:
我猜这就是你的数百个SQL查询发生的地方?
所以,在顶部你有HTTP动词
GET
和路由(在我的例子中是/login
),以及它来自的主机,然后Rails告诉你哪个控制器+动作被触发。**注意:**如果你看到一行以
Rendered...
开头,那就是你的视图正在被渲染。渲染之后的任何SQL查询都表明SQL查询是在你的视图中被触发的(例如,在你的控制器之外)。只是需要考虑一件小事。根据你的视图调用的代码,触发你的SQL查询的实际行可能隐藏在helper、model或视图代码调用的任何地方。最后的
as HTML
位告诉您请求是什么格式,因此响应中可能使用哪个视图/格式。因此,这基本上告诉您,SQL查询是作为
PublicController
中index
操作的一部分触发的,或者是作为触发此操作的结果,控制器呈现的视图之一触发的。1.如果要解析的内容太多,可以使用
debugger
命令在不同的点停止输出,并允许您检查正在发生的事情。1.您可以使用
Rails.logger.info "My info message"
或Rails.logger.error "My error message"
(取决于您是否希望它出现在默认日志或错误日志等)直接在应用日志中输出内容。hof1towb3#
您可以使用指令插入: