如何在rails

时间:2018-01-07 20:29:56

标签: ruby-on-rails

我有一个请求,控制器操作需要太长时间。 我开始使用rorvswild gem给了我一些见解,但它仍然只是表明该动作导致问题而没有进一步的细节。在动作之前运行的一些回调也很快。

查看和AR都很好 Rails日志:

Completed 200 OK in 504ms (Views: 218.8ms | ActiveRecord: 13.3ms)

rorvswild日志:

app/controllers/app_sites_controller.rb

CODE
AppSiteDraftsController#show
375ms
x1
74%

总共往返时间为504毫秒,我的意见只需要218毫秒??? 那我怎么能找到瓶颈呢?

编辑:

我使用RorVsWild,我注意到respond_to在某种程度上是另一个行动的瓶颈

RorVsWild.measure_block("Give it a name") do
  respond_to do |format|
    format.html {render 'dashboards/privacy/privacy'}
  end
end

 /app/controllers/dashboards_controller.rb:148
CODE
Give it a name
2800 ms

即使我删除了所有haml代码,它仍然很慢

更新并解决了

事实证明,我的sass文件过于沉重'。我有一些包括。当我将assets.debug更改为false时,它会快速呈现 config.assets.debug = false

2 个答案:

答案 0 :(得分:1)

我是RorVsWild的作者。请记住,在开发环境中,每个请求都会重新加载代码。它增加了波动性。为了获得可靠的测量,我建议您在development.rb中设置config.cache_classes = true。然后重新启动服务器。

AppSiteDraftsController#show或控制器回调中的某些内容很慢。但它不是一个缓慢的SQL查询,否则它将被记录。可能是Ruby重新加载你的文件或gem没有记录的其他东西。

您可以通过自己测量代码的任何部分来深入了解:

RorVsWild.measure_block("Give it a name") do
  # Ruby code
end

答案 1 :(得分:0)

如果您使用 chrome 作为浏览器,则会有一个名为导轨面板的插件,用于分析所有AR&查看每页请求并显示有关每个请求的详细信息。

<强>插件:
https://chrome.google.com/webstore/search/rails%20panel

https://lh3.googleusercontent.com/kVHmYzAOQQv_L2pasntd5t9BG0eDp9zrB4geIyKAP2SnfKsbqBgiGNsemGlZDUf7gjjbQ0PuWQ=w640-h400-e365