#200 Rails 3 Beta and RVM
Comment célébrer au mieux l'épisode 200 si ce n'est en jetant un premier coup d'œil à Rails 3 ? La première beta de Rails 3 vient de sortir et, dans cet épisode, nous allons voir comment l'installer et la configurer. Nous couvrirons les nouvelles fonctionnalités en profondeur dans les prochains épisodes. Même si vous de prévoyez pas de mettre à jour vos applications dans un avenir proche, il est toujours intéressant d'installer la beta de manière à vous faire la main et de jouer avec les nouvelles fonctionnalités.
Mettre Ruby à jour
Rails 3 requière Ruby en version 1.8.7 ou supérieure. La première étape est donc de voir quelle version vous utilisez actuellement. Pour ce faire, lancez ruby -v
dans un terminal.
$ ruby -v ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
Cette machine utilise Ruby 1.8.7. Nous aurons donc besoin de mettre Ruby à jour avant d'aller plus loin. Nous pourrions le faire à la main mais nous allons plutôt utiliser rvm, le Gestionnaire de version de Ruby (Ruby Version Manager). Cela nous permet d'installer plusieurs versions de Ruby et de passer de l'une à l'autre grâce à une simple commande.
Si vous utilisez Windows, rvm n'est pas disponible, vous devrez donc installer Ruby à la main. Sous Linux, OS X ou autres systèmes d'exploitation basés sur UNIX, nous pouvons installer rvm en suivant les instructions de la page d'installation et en lançant les commandes suivantes :
mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
Une fois que la commande est terminée, quelques instructions nous sont données pour terminer l'installation. Ces instructions seront différentes en fonction de si l'on utilise bash ou zsh. Une fois ces instructions suivies, nous devons fermer et ouvrir de nouveau le terminal. Nous pouvons maintenant lancer la commande rvm
pour installer n'importe quelle version de Ruby.
Rails 3.0 requière Ruby 1.8.7 pour tourner mais il fonctionnera également avec la version 1.9.1 et, comme nous nous sentons aventureux, nous installerons cette version. Pour ce faire, lançons la commande suivante :
$ rvm install 1.9.1
Cela va télécharger, configurer et installer Ruby 1.9.1, ce qui va prendre quelques minutes et garder vos genoux au chaud si vous faites cela sur un portable. Une fois cela terminé, nous pouvons lancer rvm list
pour voir quelles versions de Ruby nous avons d'installées.
noonoo:~ eifion$ rvm list ruby-1.9.1-p378 [ x86_64 ] system [ x86_64 i386 ppc ]
Maintenant que nous avons Ruby 1.9.1 d'installé, nous pouvons utiliser cette version.
$ rvm 1.9.1 $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
La nouvelle version de Ruby sera active tant que le terminal restera ouvert. Si nous fermons et ouvrons le terminal de nouveau, nous utiliserons la version par défaut de Ruby. Pour rendre la nouvelle version permanente, nous pouvons passer l'option --default
à rvm
.
$ rvm 1.9.1 --default $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Nous pouvons maintenant ouvrir autant de terminaux que nous voulons, 1.9.1 sera la version de ruby à chaque fois.
Si nous voulons revenir à la version système de Ruby, nous pouvons utiliser rvm system
, en passant --default
pour revenir à la version système de Ruby de façon permanente.
Installer la beta de Rails
Maintenant que nous avons une version supportée de Ruby, nous pouvons installer la beta de Rails 3.
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n gem install rails --pre
Étant donné que nous installons une pre-release de Rails, nous devons installer les dépendances à part, ce que nous faisons via la première ligne. Notez que la commande gem
n'est pas préfixée de sudo
. Comme nous utilisons rvm, nous ne voulons pas utiliser sudo
quand nous installons les gems. Faites donc bien attention. La page sur les gems du site de rvm donne plus de détails sur le sujet.
Une fois les deux commandes terminées, nous avons Rails 3.0 installé et nous pouvons commencer à tester.
Utiliser Rails 3.0
Tout d'abord, assurons nous que Rails 3 a été installé en lançant rails -v
.
$ rails -v Rails 3.0.0.beta
Si vous obtenez une erreur quand vous essayez cela, fermez votre terminal, ouvrez le de nouveau et tentez une nouvelle fois la commande. Une fois Rails 3.0 fonctionnel, nous pouvons créer notre première application. Ce sera une application très simple dont le but sera de stocker des records de jeux et nous l'appellerons topscore
. Nous créons une application Rails 3.0 comme nous le faisons habituellement :
rails topscore
Mais lorsque l'on se déplace dans le dossier de l'application et que l'on essaye de démarrer le serveur, on constate la première différence.
$ script/server -bash: script/server: No such file or directory
Aucune commande ne se trouve plus dans le dossier script
. Comment allons-nous donc lancer le serveur ? La réponse se trouve dans la commande rails
:
rails server
Lorsque nous lançons cette commande, nous pouvons nous attendre à un message d'erreur. Ce n'est pas anormal, compte tenu du fait que nous travaillons avec une beta. Si nous regardons le message d'erreur, il indique que la gem sqlite3-ruby
est manquante. Ce la peut nous sembler déroutant si la gem est bien installée sur notre système. Il faut bien comprendre que chaque version de Ruby que l'on installe embarque sa propre version du RubyGems. Cela signifie que toutes les gems supplémentaires requises devront être installées pour chaque version. Nous devons donc installer la gem sqlite3-ruby
pour Ruby 1.9.1. Encore une fois, attention de ne pas préfixer la commande par sudo
.
gem install sqlite3-ruby
Cette fois, lorsque l'on lance rails server
, nous allons voir beaucoup d'affichages et quelques warnings mais le serveur va démarrer. Si l'on visite http://localhost:3000 avec notre navigateur, nous devrions voir la page par défaut de Rails.
Nous pouvons maintenant commencer à construire notre application. Commençons par générer le scaffold de Game
, le modèle représentant un jeu, qui aura un attribut name
de type string
.
rails generate scaffold game name:string
Encore une fois, nous allons voir beaucoup d'affichages en lançant la commande mais elle devrait fonctionner. Nous allons ensuite migrer la base de données.
rake db:migrate
Si nous visitons la page des jeux (/games), nous allons voir l'habituelle page générée par le scaffold que vous avez sûrement déjà vue dans d'autres applications Rails.
Nous n'irons pas plus loin pour cette application. Dans les prochains épisodes, nous couvrirons les nouvelles fonctionnalités de Rails 3 en profondeur. En attendant, cela vaut la peine de lire les Notes de Publication de Rails 3.0 pour un aperçu de ce qui a changé. Il existe également une longue liste de liens sur Rails 3 sur Ruby Inside.
Étant donné que nous travaillons avec une version beta, il est fort possible que certaines choses ne marchent pas correctement et que vous rencontriez quelques bugs ou problèmes. Si vous rencontrez une erreur qui ne vient, à coup sûr, pas de votre code, la première chose à faire est de vérifier quelles gems ou plugins votre application utilise. Il est fort probable que l'un de ceux-ci soit la cause du problème parce qu'il n'a pas encore été mis à jour pour fonctionner avec Rails 3 ou Ruby 1.9. Si vous remontez l'origine de l'erreur à une gem ou un plugin spécifique, vous devriez ajouter un ticket dans le bug tracker de cette gem ou de ce plugin, de manière à ce que cela puisse être corrigé.
Si vous êtes sûr que le problème vient de Rails lui-même, vous pouvez soumettre un ticket sur Rails Lighthouse. Si vous décidez de soumettre un ticket, gardez ce conseil à l'esprit. Tout d'abord, cherchez dans les tickets existants pour vous assurer que vous ne dupliquez pas un ticket existant. Quand vous rédigez le ticket, assurez-vous de fournir les instructions permettant de répliquer l'erreur ainsi que le message d'erreur complet et la pile d'erreurs (stacktrace) associée. Enfin, précisez bien les versions de Ruby et de Rails utilisées ainsi que les noms et versions des gems ou plugins utilisés. Cela facilitera la duplication du problème. Soumettre de bons tickets les aidera à être relevés et corrigés.
Donner en retour à l'Open-Source
Comme vous l'aurez probablement remarqué, c'est l'épisode 200 et pour fêter ce 200e Railscast, Ryan Bates lance une campagne appelée “Give Back To Open Source” (Donner en retour à l'Open-Source). Beaucoup de travail est produit pour l'open-source et distribué ensuite gratuitement à qui veut l'utiliser. Il semble donc logique de donner en retour lorsque cela est possible. Le défi lancé par Ryan est d'ouvrir votre plus grosse application Rails et de voir les différentes gems ou plugins qu'elle utilise. Si vous regardez les pages de ces projets, vous verrez que beaucoup d'entre eux acceptent les donations ; même une petite contribution serait grandement appréciée et aiderait à la continuité du développement de cette gem.
Vous pouvez également jeter un œil à liste des tickets d'un projet, créer un fork et corriger un bug ou aider à la documentation. C'est à vous de décider de comment participer mais vous êtes encouragé à le faire pour aider la communauté Rails à avancer.