10

Ich verwende Rack-Mini-Profiler in meinem Projekt Rails 3.2.Wie profile ich einen Schienen-Controller, der eine json-Antwort mit Rack-Mini-Profiler zurückgibt?

In gemfile:

gem 'rack-mini-profiler' 

Alles funktioniert super. Aber meine Anwendung besteht hauptsächlich aus einer Reihe von Json-Endpunkten. Obwohl es sehr nützlich ist, die Leistung von HTML-Seiten zu überprüfen, möchte ich auch die Leistung von Controllern, die json zurückgeben, sehen können.

Beispiel für meinen Controller:

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

Wenn ich localhost:3000/users/json_method gehen, sehe ich meine Json Antwort aber nicht der Profiler ui.

Antwort

1

Als erste Lösung, können Sie einfach das Format HTML festgelegt und in der HTML-Seite machen:

Der Controller:

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

Und in app/views/users/index.html .erb:

Ich interessiere mich nicht so sehr für mein Json-Ergebnis, jetzt habe ich die Profilierung ui.

Eine Lösung, wo ich die Profilierung ohne Änderung meines Controllers hätte, wäre viel besser.

14

In der Entwicklung sammelt das Rack-Mini-Profiler-Juwel standardmäßig den vorherigen JSON-Aufruf und stellt ihn im Menü dar, auf das über die HTML-Seite zugegriffen werden kann. Keine Codeänderung erforderlich.

Also, machen Sie Ihre JSON-Anfrage, dann drücken Sie eine beliebige andere HTML-Seite und es wird in der Liste verfügbar sein. Wir nutzen das sehr gut. Wenn Ihre Rails-Anwendung ein JSON-API-Dienst nur, stellen Sie sicher, dass Sie einen 404.html in Ihrem öffentlichen Ordner zumindest haben, dann so etwas wie Hit:

http://localhost/404.html 
+1

Haben zwei Tabs geöffnet: eine für die JSON, die andere für jede Seite, die * nicht * JSON ist. Machen Sie den JSON-Aufruf und aktualisieren Sie dann die Seite, die nicht JSON und voilà ist, der JSON-Aufruf wird in der Nähe der Spitze sein. Es ist nicht die effizienteste Sache, aber es funktioniert definitiv! –

Verwandte Themen