af83

Passer de Ruby on Rails 2 au tout nouveau Rails 3

Rails 3 vient de sortir. Je vous encourage à lire l'annonce de la sortie sur le blog officiel, Riding Rails si vous ne l'avez pas déjà fait. Pour les nouvelles applications, il n'y a pas de doutes à avoir : Rails 3 est la route à suivre. Mais pour les applications existantes qui utilisent actuellement Rails 2.3, qu'en est-il ? C'est ce que nous allons voir en quelques questions-réponses.

Ai-je intérêt à passer à Rails 3 ?

Oui, Rails 3 apporte de nombreuses améliorations, et à peu près n'importe quelle application va tirer parti de l'une ou l'autre de ces améliorations. Par exemple, la protection par défaut contre les attaques XSS est un grand pas en avant et va simplifier la vie des développeurs. Rails 3 est également plus performant et permet de remplacer plus facilement ActiveRecord par un autre ORM. Bref, les raisons ne manquent pas de passer à Rails 3.

Puis-je passer dès aujourd'hui à Rails 3 ?

Cela dépend des projets. Rails 3 a été bien testé au cours des derniers mois avec 4 versions beta et 2 release candidates, il n'y a pas de problème de ce coté là. Mais passer à Rails 3 ne se fait pas magiquement. Il faut prendre le temps de découvrir la nouvelle version et migrer son application. Cela prend un peu de temps (de quelques jours à quelques semaines, selon la taille de l'application). Il faut donc voir si l'intérêt de passer à Rails 3 est suffisant pour justifier de passer ce temps, puis planifier cette migration, si possible lors d'une période calme.

Et pour les gems/plugins ?

La plupart des gems courants ont des branches sur leur dépôt pour fonctionner avec Rails 3. Des versions stables de ce plugin sont sorties ou vont sortir dans les jours à venir. Vous pouvez vérifier sur le site RailsPlugin.org que les gems que vous utilisez sont compatibles avec Rails 3.

Que faire si une gem n'est pas compatible avec Rails 3 ?

Si la gem n'est plus maintenue, c'est peut être l'occasion de passer à une gem équivalente plus évoluée. Vous pouvez aussi décider de reprendre le projet à votre compte en contactant l'auteur initial.

Si la gem est maintenue mais n'est pas encore fonctionnelle avec Rails 3, vous pouvez aider son auteur de différentes façons :

  1. Ouvrir un ticket sur le bug tracker du projet
  2. Suivre les développements en cours, les tester et remonter les problèmes
  3. Participer au développement en proposant des patchs, voir en créant une branche de code Rails3 spécialement pour l'occasion.

Pour une gem critique, une possibilité peut être de sponsoriser le passage à Rails à son auteur ou à un expert Rails 3.

Je suis décidé à passer à Rails 3, comment je fais ?

La première chose est de migrer vers la version la plus récente de Rails 2.3. La version 2.3.9 va sortir (demain si tout va bien), et permettra de migrer en douceur vers Rails 3. Si vous utilisez des API dépréciées, vous serez prévenu dans les logs. Cela vous permet de préparer une partie du terrain avant le grand saut. Ensuite, vous pouvez utiliser le plugin Rails upgrade pour vous aider à migrer, en suivant les explications de Jeremy McAnally.

Je vous conseille également la lecture de The Rails 3 Upgrade handbook. Le temps gagné grâce à sa lecture remboursera largement les quelques dollars qu'il coûte. Pour ceux qui aiment les vidéos, les 3 Railscasts valent également d'être regardés : partie 1, partie 2 et partie 3.

J'ai un dernier conseil pour la route : utilisez une branche séparée dans votre dépôt git/svn pour faire la migration. Vous aurez probablement besoin d'aller voir plusieurs fois votre application avant la migration et les changements faits depuis si vous rencontrez un point de blocage.

Et pour apprendre Rails 3, quelles ressources sont à ma disposition ?

Certains ont été plus rapides que moi, je vais donc me contenter de donner deux liens :

Sachez également qu'un livre en français est en cours de rédaction et devrait sortir dans les semaines à venir.

Et pour les autres questions ?

Vous pouvez poser votre question en commentaire de ce billet ou sur http://questions.rubyfr.org/.

blog comments powered by Disqus