繁体   English   中英

如何确定哪些Ruby-on-Rails代码生成了一些SQL?

[英]How to determine what Ruby-on-Rails code generated some SQL?

我有一个使用Rails 2.3用Ruby编写的应用程序。 我们使用ActiveRecord。

有时,ActiveRecord会生成一些非常低效的SQL。 我们可以使用慢速查询日志和使用new relic来确定哪些SQL有问题。 但是,要确定在我们的软件中生成有问题的SQL的代码行确实很困难。 通常,这是使用关联和named_scopes建立的查询。

我真的很喜欢某种方式来标记在我们与生成它的我们的代码文件名和行日志文件的SQL(没有的ActiveRecord的行执行的查询)。

该信息应可通过调用方数组获得。 我不想转储整个数组,我只希望最直接负责我们文件的文件名和代码行。 有没有已经做到这一点的宝石? 如果没有,有什么建议吗?

您应该在active-record-query-trace宝石中找到一些灵感

编辑:哎呀,读得太快了,这是针对RoR 3+的。 > this <似乎适用于rails 2.3 您可能还会在这里找到一些灵感。

rack-mini-profiler确实包含有关生成哪个sql查询的红宝石代码行的信息。

新文物将通过慢速SQL和事务跟踪功能为您提供单个慢速SQL查询的完整堆栈跟踪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM