Publication d'un plugin Ruby on Rails pour la génération d'url significatives
Par Bounga le mardi, 23 septembre 2008, 12:46 - Développement - Lien permanent
J'utilise depuis quelques temps un morceau de code que j'ai mis au point et qui me permet de générer très facilement des URLs significatives à partir des données contenues dans un objet ActiveRecord. Pour me simplifier la vie mais aussi pour vous en faire profiter, j'ai décidé de créer un plugin Ruby on Rails à partir de ce morceau de code.
Disons que vous souhaitiez par exemple transformer vos URLs du type :
http://www.bounga.org/news/1 en http://www.bounga.org/news/1-nouveau-plugin
C'est exactement ce que fait ce plugin !
Comment ça marche ?
Ce plugin est une extension du type acts_as qui permet de créer des URL significatives sur la base d'un attribut (ou d'une méthode) d'un objet ActiveRecord.
Il est dès lors possible de choisir si l'id doit apparaître ou non en début d'URL ainsi que de choisir l'attribut ou la méthode qui fournira la chaîne à utiliser pour générer l'URL finale.
La chaîne utilisée sera nettoyée pour la rendre valide dans le contexte d'une URL et la méthode d'instance to_param sera surchargée pour que l'objet renvoie l'URL significative lorsqu'on lui demande.
Installation
Dans une console, à la racine de votre projet Rails, il vous suffit d'entrer la commande suivante :
$ cd vendor/plugins $ hg clone http://www.bitbucket.org/Bounga/acts_as_nice_url/
Exemple d'utilisation
class Author < ActiveRecord::Base acts_as_nice_url :id => false, :title => :full_name end
Les deux paramètres sont optionnels. Par défaut :id est à true (l'id sera donc affiché en début d'url) et :title utilise par défaut l'attribut title du modèle.
Et les sources ?!
Le projet est hébergé chez BitBucket.
Vous pourrez donc le trouver à cette adresse : http://www.bitbucket.org/Bounga/acts_as_nice_url/.
Le SCM utilisé est Mercurial.
Vous pourrez suivre les commits, avoir accès à de jolis graphes, récupérer les sources ou encore forker le projet !
Le mot de la fin
J'espère que ce plugin pourra vous être utile et qu'il vous permettra de générer plus facilement des URL significatives.
Tout rapports de problèmes, commentaires ou suggestions sont les bienvenues.
Commentaires
J'ai mis à jour le plugin pour utiliser la nouvelle méthode
parameterizeapparue dans Rails 2.2. Cette méthode fait exactement ce qui était fait en interne dans mon plugin avant, alors pourquoi s'en priver.Pour ceux qui utilisent une version de Rails < 2.2, vous pouvez toujours utiliser la version 1.0.0 du plugin disponible en Gem ou via les sources.