Les avantages de Ruby on Rails (8/10) : Les tests

Posté le 15 décembre 2014 @ 13 h 08 min par Matthieu Segret

On m’avait appris en école d’ingénieur à faire des tests unitaires avec JUnit. Et oui, les tests sont bien pratique pour éviter les régressions fonctionnelles. Pourtant, ce n’est qu’avec Ruby on Rails que j’ai réellement commencé à en faire ! Pourquoi ?

L’utilisation des tests dans la communauté ruby est quelque chose de culturel. D’où vient cette sensibilité aux tests ? En grande partie, cela vient du monde de l’agilité.

– La grande partie des gems sont unit-testé. Les tests sont prèsent à tout les étages unitaires, fonctionnels, d’intégrations, de performance.

– Intégration continue : Travis, tddium

Tout d’abord, la gestion des tests est très bien pensée : par défaut Rails crée une base données dédiée aux tests et un système de fixtures (ou l’alternative Factory Girl) qui permet de mettre en place des données de tests avec une grande facilité.

Ensuite Ruby on Rails possède une structure dédié aux différents type de tests : unitaires, fonctionnels, d’intégrations, de performance.

Enfin, lorsque l’on ajoute un modèle ou un contrôleur, Rails nous génère automatiquement le squelette des tests unitaires, fonctionnels. Ruby on Rails ne nous oblige pas à coder des tests mais tout nous incite à en faire.

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Une formation 100% Ruby

Posté le 16 janvier 2013 @ 16 h 21 min par Matthieu Segret

Je donne maintenant la formation Ruby on Rails au moins une fois par mois depuis aout 2011. Cette formation comprend une première journée entièrement dédiée à Ruby, idéale pour débuter. Régulièrement, les personnes que je forme à Ruby on Rails me disent qu’elles auraient aimé que la partie Ruby soit plus approfondie.

J’ai donc décidé avec Camille d’ajouter à cette journée d’introduction à Ruby, deux jours supplémentaires entièremenent consacrés à Ruby. Ces deux jours permettent d’approfondir les notions avancées du langage et de son écosystème : utilisation avancée des modules, métaprogrammation, création de DSL, débogage d’un programme Ruby, gestion des thread et processus, création et publication de gem, présentation de quelques bibliothèques indispensables…

Cette formation 100% Ruby sera d’une réelle utilité pour les développeurs Ruby on Rails qui souhaitent approfondir leur connaissance du langage mais également pour ceux qui souhaite maitriser ce langage indépendament de Ruby on Rails.

Vous pourrez découvrir le programme complet de la formation Ruby sur Human Coders Formations !

[Présentation] Ruby : Block, Proc et lambda

Posté le 14 janvier 2013 @ 11 h 32 min par Matthieu Segret

En tant que formateur Ruby, je rencontre régulièrement des développeurs manipulant les block, Proc et lambda sans toujours comprendre comment cela fonctionne. J’ai donc eu l’idée de faire cette présentation au Meetup Paris.rb (10 décembre 2012)

Les avantages de Ruby on Rails (7/10) : Active Record

Posté le 24 juillet 2012 @ 17 h 48 min par Matthieu Segret

Pour avoir utilisé d’autres ORM, Active Record fonctionne comme beaucoup d’autres mais avec une touche de simplicité et une grande puissance.

Par exemple, aucune déclaration Ruby n’est nécessaire pour rendre un objet persistant, si la classe de cet objet hérite de Active Record, l’ORM inspectera la table correspondant à cette classe pour connaître l’ensemble et de ses champs et leur type. La classe implémente automatiquement les accesseurs pour chaque attribut.

Les associations entre entités se font sans effort, une déclaration dans votre modèle suffit. Vous pourrez après cela naviguer facilement dans votre grappe d’objets en écrivant du code Ruby, par exemple : comment.owner.name pour récupèrer le nom de l’auteur d’un commentaire. Active Record générera la requête SQL avec la bonne jointure automatiquement. Vous pouvez par la suite définir les politiques de suppression, de cache, de sauvegarde pour chaque relation.

La mise en place de règles de validations est déconcertante de facilité, une simple déclaration dans votre modèle vous permet d’assurer l’intégrité de vos enregistrements. De plus, ces règles de validations fonctionnent de pair avec la vue pour permettre sans effort l’affichage des erreurs dans un formulaire (même avec la localisation !).

Il est utile de préciser que l’utilisation d’Active Record n’est pas obligatoire, vous pouvez connecter à vos modèles d’autres types d’ORM selon vos besoins : Data Mapper, Mongoid, etc.

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (6/10) : le déploiement sur le cloud

Posté le 15 février 2012 @ 13 h 51 min par Matthieu Segret

Une chose qui a changé ma vie de développeur lorsque je suis entré dans le monde Ruby c’est la possibilité de déléguer l’administration de son application sur le cloud avec Heroku, Engin Yard ou Cloud Foundry.

L’administration système n’a jamais été une passion pour moi. Donc pouvoir déployer mes applications en un «git push» sur Heroku est un gain de temps considérables.

Si on ajoute à cela les services proposés sur le cloud (backup journalier de la base de données, mise en place de cron, monitoring des instances de production avec New Relic, gestion des erreurs avec Airbrake, mise en place de cache : Redis ou MemCache, création de certificats SSL ..) Tous ces services ne sont pas une exclusivité Ruby on Rails, mais avec Rails c’est souvent plug & play !

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (5/10) : Rake, le lanceur de tâches

Posté le 15 décembre 2011 @ 14 h 29 min par Matthieu Segret

Pour avoir pas mal utilisé Ant lorsque je faisais du Java, je me souviens du temps perdu pour débogguer mes scripts. Je me disais alors, pourquoi coder des scripts en XML ?

Avec Rake, je peux écrire mes tâches en Ruby. Comme Ant, je peux gérer une dépendance de tâche si nécessaire.

Il est très simple de charger tout le contexte d’un projet Rails dans une tâche Rake afin par exemple de manipuler la partie métier d’une application.

On peut aussi très facilement utiliser un système de Cron avec des tâches Rake pour les lancer périodiquement.

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (4/10) : Rack

Posté le 8 décembre 2011 @ 12 h 56 min par Matthieu Segret

Rack est une couche d’abstraction entre le serveur web et votre code Ruby. Pour les pythonistes, Rack est l’équivalant de WSGI.

Les autres me diront : « A quoi ça sert ? ».

Le premier intérêt de Rack, c’est de servir « d’adapteur universel » entre la plupart des serveurs web et du code Ruby. L’interface est très simple : une méthode qui prend la requête en entrée et retourne la réponse en sortie.

Il n’y a pas besoin de rentrer dans la technique pour voir d’autres avantages. Les « tranches » Rack peuvent se superposer, la réponse en sortie d’un Rack peut être branchée à l’entrée d’un autre Rack. Ces Racks que l’ont appellent middlewares ont différentes utilités : mise en place de cache avec Rack::Cache, Rack::Throttle pour limiter le nombre et la fréquence des requêtes HTTP provenant d’un client, Rack::Honeypot pour filtrer les spams, etc. Vous trouverez d’autres exemples ici.

Enfin dernier grand avantage : Rack peut rendre vos applications web modulaire ! En effet vous pouvez créer des applications Ruby on Rails entières avec modèles, vues et contrôleurs et les réutiliser comme un module d’une autre application Rails. C’est comme cela que fonctionne par exemple ActiveAdmin et Devise. A noter que Ruby on Rails n’est qu’un ensemble modulaire de « tranches » Rack.

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (3/10) : la gestion des bibliothèques

Posté le 1 décembre 2011 @ 11 h 47 min par Matthieu Segret

En 2 ans de Java, je n’ai jamais rien compris à Maven, pourtant avec Nexus, la gestion des bibliothèques durant le déploiement devait être plus simple… J’ai fini par me dire que l’installation automatisée des bibliothèques et la résolution de leurs dépendances devait être un métier à part !
Ici c’est Rubygems et Bundler qui m’ont fait changer d’avis (tous deux sont inclus par défaut dans Rails).

Rubygems permet de facilement publier, installer et mettre à jour des bibliothèques Ruby (que l’on appelle « gems »).

Grâce à Bundler, vous pouvez dans un seul fichier déclarer la liste des gems utilisés par votre projet. Si vous ajoutez ou enlevez la déclaration d’une gem, Bundler le détecte et installe ou supprime automatiquement la gem en question. Bundler résout les dépendances, les doublons, les différences entre les environnements (développement, tests, staging, production.. ). Cela redevient humain de gérer les bibliothèques dont dépend votre projet !

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (2/10) : SASS et CoffeeScript

Posté le 22 novembre 2011 @ 14 h 55 min par Matthieu Segret

Certains me diront : « SASS et CoffeeScript, ce ne sont pas des exclusivités de Ruby on Rails ? ». Et ils auront raison ! Seulement je n’aurais pas utilisé ces langages s’ils n’étaient pas par défaut dans Rails.

CoffeeScript est une manière alternative d’écrire du Javascript. Il s’agit d’un langage destiné à être compilé en javascript. Mon code est plus lisible, plus facile à maintenir, il m’évite les pièges basiques. CoffeeScript a été pour moi un grand changement dans ma façon de faire du JavaScript, du même ordre que la découverte de mon premier framework Javascript (Prototype). De plus la combinaison CoffeeScript / JQuery est un réel plaisir !

Si vous voulez en savoir un peu plus sur CoffeeScript, je vous conseille les slides de Jean-Hadrien Chabran.

Il y aussi son homologue pour CSS : SASS. SASS est compilé en CSS et ajoute ces fonctionnalités que j’attendais désespérément : les variables, les fonctions, l’imbrication des sélecteurs..

Et si l’on ajoute Compass, un framework CSS codé en SASS, faire du CSS devient enfin supportable !

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails

Les avantages de Ruby on Rails (1/10) : les bibliothèques

Posté le 17 novembre 2011 @ 11 h 10 min par Matthieu Segret

– Besoin d’une interface d’administration ? Je mets en place ActiveAdmin en moins d’une journée !

– Besoin d’un système d’authentification complet (validation de l’email, gestion de la perte du mot de passe, chiffrement du mots de passe etc..) ? En moins d’une heure j’ai tout cela avec Devise. Et une heure plus tard j’ai aussi la connexion Facebook, Twitter, LinkedIn avec OmniAuth.

– Besoin de mettre en place un moteur d’indexation de documents avec le célèbre Solr (basé sur Lucene)? Il me suffit d’une demi-journée pour écrire mes règles d’indexation avec Sunspot et moins d’une heure pour mettre en place Solr avec WebSolr.

Je n’ai jamais autant aimé écrire des formulaires depuis que j’ai découvert SimpleForm. J’écris mes formulaires en Ruby, et SimpleForm génère à partir d’un objet de mon modèle un formulaire avec label, annotations, affichage des erreurs, validation html5 pour chaque attribut spécifié.

Ruby on Rails foisonne de gems (bibliothèques) me permettant de mettre en place des fonctionnalités complexes avec une grande simplicité.

Vous semblez sceptiques ? Je vous invite à aller voir le site de Ryan Bates : RailsCasts qui vous donnera quelques échantillons.

Je vous invite à lire les autres avantages de la série : les avantages de Ruby on Rails