Zum Inhalt

MiniProfiler für Ruby

MiniProfiler ist ein äusserst hilfreicher Profiler für Webanwendungen, den ich hier schon vorgestellt habe. Hat man sich erst einmal an den immer verfügbaren Profiler gewöhnt will man nicht mehr ohne dieses Werkzeug entwickeln. Und man will es auch für alle anderen Plattformen nutzen. Wie sich zeigt geht dies nicht nur mir so. MiniProfiler wurde auf Ruby portiert und bietet einem dort den gleichen Funktionsumfang.

Installation und Konfiguration

Die Installation und Konfiguration ist unter Ruby deutlich einfacher als in .Net. Es genügt das Gemfile seiner Rails-Anwendung um einen Eintrag zu Miniprofiler zu ergänzen:

gem 'rack-mini-profiler'

Nach einem bundle install kann man die Anwendung starten und MiniProfiler sofort nutzen:

Will man wissen wie viel Zeit man für eine Methode benötigt übergibt man diese in einem Block an MiniProfiler:

1
2
3
4
5
6
def index
  Rack::MiniProfiler.step("fetch items") do
    @items = Item.all
  end
  ....
end

Die Auswertung unterscheidet sich nicht gross von der aus .Net bekannten Darstellung:

Rails Methode

SQL Abfrage

MiniProfiler in der Produktion

Standardmässig wird die Rack-Middleware nur in der Entwicklungsumgebung aktiviert. Da Rails in diesem Modus keine Optimierungen macht variieren die Werte recht stark. Dieses Problem lässt sich lösen in dem man MiniProfiler auch in der Produktion aktiviert.

Dazu erweitert man am besten die Datei application_controller.rb um einen Before-Filter:

1
2
3
4
5
6
7
8
before_filter :miniprofiler

private
def miniprofiler
  Rack::MiniProfiler.authorize_request 
  # Optional mit Einschränkung der Sichtbarkeit: 
  # if user.developer?
end

Fazit

Mit dem portierten MiniProfiler kann man die unter .Net schätzen gelernten Möglichkeiten auch für Rails-Anwendungen nutzen. Die Konfiguration ist durch die Implementierung als Rack-Middleware sogar noch einfacher als im Original. Somit gibt es keinen Grund auf MiniProfiler zu verzichten nur weil man Rails nutzt.