10

Sto usando rack-mini-profiler nel mio progetto di rotaie 3.2.Come profilare un controller di rotaie che restituisce una risposta JSON con rack-mini-profiler?

In Gemfile:

gem 'rack-mini-profiler' 

Tutto funziona alla grande. Ma la mia applicazione è principalmente un insieme di endpoint JSON. Quindi, mentre è molto utile essere in grado di ispezionare le prestazioni delle pagine html, mi piacerebbe anche poter vedere le prestazioni dei controller che restituiscono json.

Esempio di mio 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 

Se vado a localhost:3000/users/json_method, vedo la mia risposta JSON, ma non l'interfaccia utente profiler.

risposta

1

Come prima soluzione, si può semplicemente impostare il formato HTML, e rendere all'interno della pagina html:

Il controllore:

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

E in app/views/utenti/index.html .erb:

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

Non mi interessa molto del mio risultato JSON, ora ho il profilo UI.

Una soluzione in cui ho il profilo di ui senza cambiare il mio controller sarebbe molto meglio.

14

In fase di sviluppo, per impostazione predefinita, la gemma di rack-mini-profiler raccoglie la precedente chiamata JSON e la presenta nel menu accessibile dalla pagina HTML. Non è richiesto alcun cambio di codice.

Quindi, effettuate la richiesta JSON, quindi premete qualsiasi altra pagina HTML e sarà disponibile nell'elenco. Lo usiamo con grande efficacia. Se la vostra applicazione Rails è solo un servizio di JSON API, assicuratevi di avere un 404.html nella cartella pubblica almeno, poi ha colpito qualcosa come:

http://localhost/404.html 
+1

avere due schede aperte: una per il JSON, l'altro per tutte le pagine che * non è * JSON. Effettua la chiamata JSON, quindi aggiorna la pagina che non è JSON e voilà, la chiamata JSON sarà vicina alla parte superiore. Non è la cosa più efficiente, ma funziona sicuramente! –