21

我在我的 rails 3.2 项目中使用 rack-mini-profiler。

在宝石文件中:

gem 'rack-mini-profiler'

一切都很好。但我的应用程序主要是一组 json 端点。因此,虽然能够检查 html 页面的性能非常有用,但我也希望能够查看返回 json 的控制器的性能。

我的控制器示例:

class UsersController < BaseController
  def json_method
    # you don't see the mini profiler ui for this controller
    render json: { users: [:foo, :bar]}
  end
end

如果我转到localhost:3000/users/json_method,我会看到我的 json 响应,但看不到分析器 ui。

4

5 回答 5

22

在开发中,默认情况下,rack-mini-profiler gem 会收集之前的 JSON 调用并将其显示在可从 HTML 页面访问的菜单中。无需更改代码。

因此,发出您的 JSON 请求,然后点击任何其他 HTML 页面,它将在列表中可用。我们用它来取得很好的效果。如果您的 Rails 应用程序仅是 JSON API 服务,请确保您的公共文件夹中至少有一个 404.html,然后点击以下内容:

http://localhost/404.html
于 2014-11-07T12:23:21.063 回答
6

如果 rack mini profiler 无法显示结果,它将收集它们,直到它可以在下一个 HTML 页面上显示。因此,我使用的解决方案是:

发出 JSON 请求,然后点击我选择的 HTML 页面。结果将与最新的 HTML 配置文件一起显示。

http://tech.eshaiju.in/blog/2016/02/25/profile-api-endpoints-using-rack-mini-profiler/

于 2016-02-25T06:47:51.610 回答
6

在第二个选项卡中,你可以访问这个 URL/rack-mini-profiler/requests在那里你可以看到最后的请求日志

于 2021-04-07T06:32:53.050 回答
1

作为第一个解决方案,您可以将格式设置为 html,并在 html 页面中呈现:

控制器:

class UsersController < BaseController
  def json_method
    @users_json { users: [:foo, :bar]}
    render 'index', formats: ['html']
  end
end

在 app/views/users/index.html.erb 中:

Users:<br/>
<%= @json.inspect %>

我不太关心我的 json 结果,现在我有了分析 ui。

在不更改控制器的情况下拥有分析 ui 的解决方案会好得多。

于 2014-05-14T14:45:32.387 回答
1

请注意,在使用 初始化的新 Rails API 项目中rails new api_name --apiApplicationController继承自ActionController::API,而不是ActionAcontroller::Base。在这种情况下,显示您的 HTML 页面时,迷你分析器可能不会加载。

我不得不更改基类以ActionController::Base使其工作。如果在您的应用中,您在 HTML 页面上没有看到从 mini-profiler 加载资源的请求,您可能需要尝试此更改。我花了很长时间才弄清楚。

另请注意,您确实需要至少<body>在模板中包含要呈现的标签,否则迷你分析器 div 将无法正确注入。

于 2019-05-27T14:37:54.593 回答