samedi 5 novembre 2011

Mauvaise expérience avec Rails



Je viens d'essayer de faire un test avec Rails 3.1.1 installé pour Ruby 1.9.2 via rvm. Et bien c'est une bonne galère. Voici le scénario

Installation du gem rails pour l'environnement ruby 1.9.2 de rvm. C'est très long mais il n'y a pas d'erreur.

Premier essai d'un rails new truc pour créer une app. Boum, rails ne trouve pas sqlite3.

OK, il faut faire un aptitude install libsqlite3-dev, on relance la commande, ça prend encore 1 bonne minute et ça passe. Ouf. Et si je n'avais pas voulu utiliser sqlite3 ?

En suivant ce tutoriel, je vois qu'il faut créer la base avec une tâche rake db:create. Boum, rake veut un runtime JavaScript (heu, je voulais faire du ruby, là !). Quelque galère puis finalement J'installe rhino que je trouve dans aptitude et qui contente rake. La base de données peut se créer.

Ok, je peux lancer l'appli avec un rails server maintenant. Boum. Pas d'openssl. Ouais, c'est bon, je m'en fiche d'avoir des pages chiffrées, je veux juste tester rails moi ! Recherche sur le net, installation d'un libssl-dev, recompilation de l'extension openssl pour la version de ruby, webrick se lance. Superbe.

Je décide de paramétrer une première route, toujours en suivant le tutoriel. La page ne s'affiche pas, dû à une erreur javascript. Il semble que le runtime JS pour execJs ne soit pas totalement reconnu. Je mets therubyracer dans mon Gemfile et je fais un bundle install. Ça marche mais j'en ai assez, je vais faire une pause. Peut-être faire un peu de Django ?

Cette mésaventure m'attriste car je n'avais pas eu tous ces problèmes sur une version précédente de rails. Je ne comprends pas qu'on m'oblige a avoir sqlite3, openssl et surtout un runtime JS. Ce framework deviendrait-il trop complexe ? C'est d'autant plus énervant que j'aimerais faire des trucs avec ruby, que le langage me semble élégant et me parait entouré d'une certaine simplicité.

À titre de comparaison, j'ai également essayé sinatra cette semaine. Il s'agit d'un framework VRAIMENT léger, en fait principalement un descripteur de routes. Il possède évidemment moins de fonctionnalité que rails, mais permet de démarrer encore plus rapidement. Je me demande si on ne dirige pas vers un nouveau modèle de légèreté dans le domaine du développement web agile.

PS : je viens de refaire un essai en désinstallant rhino et en recréant un projet Rails intégrant therubyracer. Rake fonctionne. Je respire.