…">

Shiny happy people coding

Codons avec le sourire

Profiler une requête rails

| Comments

Pour découvrir le bug dont j’ai reporté précédement les effets, j’ai voulu réaliser un profile de la requête executée. Ca devait me permettre de voir ce qui prenait vraiment beaucoup de temps dans l’execution de cette page.

Utilisation du script Request Profiler

Depuis Rails 2.0, un nouveau script a été ajouté, script/performance/request. Ce script permet de réaliser un profile d’une ou plusieurs requête internet.

Pour indiquer les requêtes à executer il suffit de réaliser un petit fichier de script avec le même format que les tests d’intégrations. Voici un exemple issue du changelog de rails.

get_with_redirect ‘/’ say “GET / => #{path}” post_with_redirect ‘/sessions’, :username => ‘john’, :password => ‘doe’ say “POST /sessions => #{path}”

Une fois le script réalisé, il suffit de lancer la commande en définissant le nombre de requêtes qui seront effectuées

$ ./script/performance/request -n 10 login_session.rb

Par contre, il faut faire très attention, il n’y a aucune solution (ou tout du moins à ma connaissance) pour définir les valeurs de la session. La session est vierge à chaque lancement de script. Il faut donc réaliser la connection de login au préalable pour avoir un utilisateur loggé par exemple.

Incompatibilité Rails 2.1 et ruby-prof

Alors que j’avais indiqué l’ajout d’un nouveau script dans Rails Edge qui nécessitait ruby-prof 0.6.1, je pensais que c’était le seul endroit qui nécessitait cette version de ruby-prof qui n’existe pas encore (dernière version stable : 0.6.0 en téléchargement sur rubyforge). Hélas, ce n’est pas le cas. Depuis la version 2.1 de Rails, le script performance/request nécessite aussi ruby-prof 0.6.1. Mais cette version, n’est toujours pas encore sortie officielement. Il faut donc générer et installer ce gem pour arriver à avoir cette fonctionnalité. En effet, même en modifiant la version de ruby-prof des méthodes n’existent pas dans les versions antérieurs à la version 0.6.1

Génération et installation de ruby-prof-0.6.1

Il faut d’abord récupérer les sources directements à partir du svn de ruby-prof

svn co http://ruby-prof.rubyforge.org/svn/

Ensuite, il faut générer le gem

$ rake package

Enfin, il suffit d’installer le gem.

# gem install pkg/ruby-prof-0.6.1.gem

Désormais, ruby-prof 0.6.1 est installé et vous pouvez utiliser pleinement le script performance/request.

English translation