Apprendre Ruby : les outils pour bien démarrer

Depuis quelques temps, beaucoup de gens (dont moi) parlent de Rails et cela vous a peut être donné envie de l’essayer. Mais bon, Rails, c’est sur Ruby, et vous ne connaissez rien à Ruby. La solution est évidente : apprendre le Ruby !

La plateforme

Avant de parler de l’installation, commençons par un point délicat: La plateforme.

Pour le développement, Windows n’est vraiment pas au top, et pour moi encore plus en Ruby, Python, et tout autre langage qui joue beaucoup sur une console interactive. La faute (en plus de l’absence d’un gestionnaire de paquet convenable sur windows) à une console cmd d’un autre âge.

Je conseil donc au moins d’installer cygwin et mintty (vous le trouverez dans cygwin), et au mieux d’installer un linux, même si c’est sur une machine virtuelle. (au hasard avec VirtualBox et Linux Mint). Sinon, si vous êtes bien sur votre windows avec votre cmd, passons à la suite

Comment installer Ruby ?

Pour tous ceux qui aimeraient tester Ruby et Rails, ou apprendre à intégrer autrement avec Slim, SASS et Coffeescript, voilà un tutoriel expliquant comment installer Ruby et le serveur de test Thin en local, quel que soit le système d’exploitation.

Aujourd’hui, nous pouvons réellement observer une fracture entre deux types de technologies, sur le web. Pour certains, la guerre se joue entre le HTML5/CSS3 et le reste, mais il existe un autre front, bien plus important.

D’un coté, se trouvent les technologies en place depuis longtemps: PHP, Java (dans une moindre mesure), et les fichiers css.html/js.

De l’autre, les technologies émergentes. De nouveaux langages servers plus performants (Ruby, NodeJS, et quelques autres), armés de nouveaux « langages » navigateurs tel le HAML, SASS, slim, ou Coffeescript, pour ne citer qu’eux. L’idée étant de fournir au serveur des fichiers qu’il traduit en HTML, CSS ou javascript, avant de les envoyer au client.

Le gain de productivité et de propreté gagné avec l’utilisation de ces technologies nouvelles est vraiment impressionnant: Les langages sont plus clairs, plus concis, et il est possible de définir aisément des fonctions et macros pour encore gagner en temps. Pourtant, ils ne sont que peu utilisé. Compliqués à installer et à utiliser, pensent certains.

Voici comment installer Ruby et Thin sur son Windows, Mac ou Linux. Cela fournira une base commune simple pour d’autres tutos, et permettra de tester simplement ces nouvelles technologies.

Rapide présentation de Thin

Thin est un web server pour ruby dont le site officiel se trouve ici. Il permet de lancer l’importe quel application ruby rake (comme rails, sinatra, …) tres simplement: il suffit d’aller dans le dossier et taper dans la console « thin start ». Pas besoin d’un dossier centralisé, de wamp, ni de rien du tout. Juste « thin start ».

Installer Ruby sur Mac et Linux

Premièrement, Mac est vraiment l’environnement à préférer pour Ruby. Si vous êtes un développeur, et que vous n’avez pas de Mac, installez un Linux. Si vous ne supportez pas linux, et que vous avez un windows… Achetez un Mac.

  • Compétences requises: Savoir utiliser son gestionnaire de paquet (Linux), trouver son terminal (Mac)
  • Connaitre sa version de ruby: Tapez dans votre terminal « ruby -v ». Si une ligne ressemblant à « ruby 1.9.2p290 » s’affiche, vous avez déjà ruby. Vous pouvez passer à la partie 3.
  • Installer ruby: Essayez tout d’abord d’installer le paquet ruby. Si il est présent et en version à jour (1.9.2 à l’heure ou j’écris ces lignes), pas de problème, vous pouvez passer à la suite. Si la version proposée est vieillissante (comme c’est le cas avec les distributions basées sur Debian, par exemple), OU que vous voulez avoir plusieurs versions de ruby installées en parallèles, passez au 2′ 
  • Installer RVM: Nous allons installer RVM (ruby version manager). Rien de bien compliqué.

Pour les flemmards, je récapitule les quelques étapes:
    - a: Installer les dépendances de rvm: git curl bash (pour une debian-like: sudo apt-get install git curl bash)
    - b: Installer rvm:  taper ça dans son terminal « bash < <(curl -s https://rvm.beginrescueend.com/install/rvm »), puis on attend.
    - c: Démarrer rvm avec son shell: « echo ‘[[ -s « $HOME/.rvm/scripts/rvm » ]] && . « $HOME/.rvm/scripts/rvm » # Load RVM function’ >> ~/.bash_profile« , puis redémarrer le shell.
    - d: installer les dépendances de ruby, gem, irb, et autre: Tapez rvm notes, elles seront toutes affichées.
    - e: installer ruby 1.9.2 et le définir par défaut: rvm install 1.9.2 && rvm –default 1.9.2
    - f: aller boire un café, la compilation peut prendre quelques minutes

  • Installer thin: gem install thin
  • Installer une base de donnée(optionnel): sudo apt-get install mysql sqlite && gem install sqlite3 mysql2, rien de bien complexe.

Installer Ruby sur Windows

Windows Compétences requises: Pas grand chose…

  • Trouver la console: Qu’est ce qu’une console? Une interface ou l’on peux écrire des lignes de commandes. Ça peut faire peur, mais ruby l’utilise pour installer ses gems, et c’est plutôt simple. Sur windows, le plus compliqué est de la trouver. Appuyez simultanément sur la touche windows et « R ». Une invite apparait, écrivez dedans « cmd », et voilà, ce carré noir moche et old school, c’est votre console. Vous en aurez parfois besoin.
  • Installer ruby. Un installateur tout compris et à jour est trouvable sur rubyinstaller: http://rubyinstaller.org/. Prenez l’installateur 1.9.2. Dutant l’installation, il vous proposera d’ajouter Ruby à votre Path, et de lier les .rb à ruby. Cochez ces deux cases.
  • Installer les dépendances de Thin: Redémarrez votre console, puis tappez dedans « gem install eventmachine –pre« 
  • Installer Thin: tappez dans la console « gem install thin« 
  • Installer une base de donnée (optionnel): je conseille mySQL et/ou SQlite. Pour mySQL, l’installateur est ici http://www.mysql.com/downloads/mysql/ .Pour SQlite: il n’y a pas d’installateur, simplement une dll. Il suffit de la télécharger ici http://www.sqlite.org/sqlite-dll-win32-x86-3070701.zip, et de la décompresser dans c://windows/system, c://windows/systeme32, ou dans votre dossier ruby.

Voilà, nous voilà avec un environnement ruby complet comprenant ri(la doc), irb(la console), rake et ruby. Nous avons en plus de tout ça Thin, qui nous permettra de nous passer de wamp et de apache. Pour l’utiliser, il suffit d’aller dans le dossier d’un site basé sur rake (donc fait avec Rails, Sinatra, Camping, ou presque tout framework en ruby) avec la console et d’y taper « thin start ».

Quels IDE utiliser ?

Sous mac, sans surprise, Xcode marche très bien.

Sous linux ou windows, le choix est plus vaste. Aptana est pas mal, RubyMine est très bien mais payant.

Personnellement, mon choix c’est porté sur… aucun  à peu près tout les éditeurs de texte (gedit, notepad++, kate, scite, vim et emacs, …) gèrent le Ruby, et j’aime mieux un éditeur de texte à un IDE que je trouve lourd. Donc Vim pour moi.

IRB

IRB Est une (la plus utilisé) console interactive Ruby. Elle permet beaucoup de choses, depuis tester des morceaux de codes, voir des scripts, à gérer ses bases de données avec active record.

Voilà quelques gems pour la rendre plus attrayante.

Awesome Print

Cette gem permet une coloration syntaxique ainsi qu’une indentation de l’output. Il existe aussi Wirb, mais son développement est arrêté.
http://rubygems.org/gems/awesome_print

ORI

ORI est une implémentation de RI (l’aide de Ruby) dans IRB. Un doute sur une classe ou une méthode ? MaClass.ri donne toute la doc nécessaire.
http://rubygems.org/gems/ori

Interactive Editor

interactive_editor permet d’ouvrir un vim, emacs, nano, ou autre, directement depuis irb. Cela permet de tester de grands morceaux de code, bien plus simplement.
http://rubygems.org/gems/interactive_editor

hirb

Hirb permet de générer un affichage sous forme de tableau de ses objets ou Array. Très pratique quand l’on travail avec des bases de données.
http://rubygems.org/gems/hirb

 

Les Gems pratiques pour vos projets Ruby

Pour remédier à ça, le blog du webdesign vous propose 10 gems ruby qui vous rendront bien des services.

The Role

The role est une lib permettant de donner et gérer des rôles pour Rails, maintenant compatible avec Rails 4

Geocoder

Géocoder est une lib permettant de faire de la géolocalisation par IP ou adresses postales, partout dans le monde. Fonctionne en stand-alone, mais est fait pour être parfaitement integré à un ORM.

Whisper

Whisper est une lib permettant d’avoir des listeners et des flux d’événements à la place des observers de Rails.

reForm

Reform est une ressource vous permettant de decoupler vos formulaires avec vos modèles, permettant de sortir de cette impression de modèle « fourre-tout » dès qu’il y a beaucoup de validations et formulaires différents à gérer.

Better Errors

Cette gem permet d’avoir des rapports d’erreurs plus précis et mieux ranges pour toutes les applications Rack

Pilfer

Pilfer est une gem juste parfaite pour le benchmark ing, vous donnant le temps nécessaire pour exécuter chaque ligne. Vraiment pratique pour savoir ce qui vaut la peine d’optimiser, et ce qui n’en vaut pas la chandelle.

Valkyrie

Avez-vous déjà eu besoin de passer des données d’une BDD à une autre régulièrement ? C’est extrêmement pénible sans les bons outils, comme Valkyrie par exemple. Valkyrie semble un projet abandonner mais il fait ce qu’on lui demande et c’est déjà bien.

Mustermann

Mustermann est l’outil caché derrière la résolution de routes de Sinatra. Disponible en stand-alone, il vous permettra de faire des sélections de cas sans passer par l’opérateur =~, qui est vraiment très lent.

Wicked-pdf

Qu’utilisez-vous pour générer des PDFs en ruby ? Avant j’utilisais Prawn, qui est efficace mais un vrai purge pour ce qui est de la syntaxe. Wicked-PDF résout le problème : il est aussi rapide, et génère les PDFs à partir d’HTML et CSS.