Mes gems utiles

By antho1404 • work • 22 Feb 2013

5e0cef13366d37ba05f48a1bb98f121d.resizedEtant développeur Ruby on Rails, l’un des gros avantage que j’ai est de pouvoir utiliser des gems (des plugins pour une application).

Ici je vais faire un petit tours des gems que j’utilise le plus souvent avec leurs avantages (a mon sens).

 

 

 

Déjà commençons par la base:

  • Devise pour l’authentification – Très bonne gem permettant de faire un système d’inscription vraiment complet en 2-3 commandes (gestion des sessions, sécurisation des mots de passes, gestion du changement de l’email, du mot de passe, des informations perso…) énormément de choses et tout ça en très peut de code.
  • Cancan pour les autorisations – Vous avez toujours des ressources que vous voulez rendre visible ou pas suivant les utilisateurs. Par exemple je veux que mon article soit lisible seulement par les utilisateurs enregistrés et seulement si il est publié il suffit de l’écrire dans un fichier de droits et tout le reste se fait quasiment tout seul lors de la récupération ou modification des données.
  • Simple Form pour construire vos formulaires – Quoi de plus rébarbatif en faisant des pages web que de faire les formulaires. Perso c’est quelque chose que je ne supporte pas faire il y’a plein de choses à configurer le type du champ, la méthode utilisée pour envoyer les données, où les envoyer, les validateurs… Ici plus de soucis simple_form s’occupe de tout et va détecter automatiquement en fonction de l’objet sur lequel on veux appliquer le formulaire ce qu’il doit faire et va créer les meilleurs champs en fonction des attributs de l’objet.
  • Inherited Ressources pour ne rien écrire dans vos contrôleurs – Dans le cas d’une application REST les contrôleurs se résument souvent aux mêmes actions et voir au même code à l’exception des ressources utilisés. Avec cette gem, plus besoin d’écrire quoi que ce soit (ou du moins plus grand chose) dans ces contrôleurs du coup. Résultat seulement une 10ène de lignes à maintenir dans l’ensemble de vos contrôleurs au lieux de plusieurs 100ènes.

Concernant maintenant la partie front:

  • HAML pour l’html – l’HTML c’est old school il parait et surtout c’est long a écrire et on peut faire rapidement des erreurs horrible a débugger (genre une div pas fermée…). HAML apporte une nouvelle syntaxe et s’occupe de compiler ce nouveau code en HTML et en profite pour détecter les erreurs s’il y en a. Un gain de temps à l’écriture non négligeable.
  • SCSS pour le CSS – SCSS ou SASS est une “surcouche” au CSS qui permet une fois compilé d’avoir un CSS classique mais avant ça du coup on peut utiliser des variables, des boucles, des fonctions et une structure beaucoup plus maintenable que le CSS. Enorme gain de temps que ce soit lors du développement ou surtout lors de la maintenance. Inclus de base dans Rails.
  • CoffeeScript pour le javascript – Même principe que HAML et SCSS, une surcouche ici pour écrire du javascript plus rapidement, plus facilement niveau maintenance et tout ça avec moins de risque d’erreurs. Ha et le truc bon c’est qu’on a une syntaxe pas horrible pour faire de l’objet. Inclus de base dans Rails.
  • Compass librairie de fonctions pour le CSS – Se basant sur du SCSS, il permet d’avoir entre autre accès à toute une bibliothèque de fonctions qui génèrent du code css. Un exemple plutôt pratique est l’utilisation de préfixes -moz -webkit… pour les propriétés css3, avec compass plus besoin il les génère pour vous réduisant considérablement le nombre de lignes de code à maintenir.
  • Twitter Bootstrap créer un design très rapidement – Tout est encore gain de temps ici, un excellent “framework” css permettant d’avoir des classes css permettant de créer un design préconçu très rapidement et tout ça très configurable grâce au variables SCSS.

Pour la partie développement pure:

  • Better Errors une interface plus complète pour vos erreurs – Lorsque vous aurez une erreurs dans votre application plus besoin de galérer à trouver la ligne en cause et pourquoi il y’a un soucis en regardant dans une stack pleine d’informations rarement vraiment utile. Ici vous avez une interface pour vos erreurs beaucoup plus pratique. Bonus avec la gem binding_of_caller en plus vous avez même le droit à une console dans votre log d’erreur.
  • Quiet Assets pour nettoyer vos logs – Ici rien de bien compliqué, juste une gem qui permet de ne plus voir dans les logs toutes les lignes concernant les chargements des assets du coup les logs deviennent lisibles.
  • Bullet pour optimiser vos requêtes – A force d’avoir rails qui fait les requêtes sql (ou autre) pour nous on peut vite oublier les performances. Bullet est là pour vous signaler des problèmes lors de requêtes trop gourmandes ou trop nombreuses et vous dit même comment les corriger.

Les outils divers:

  • Active Admin pour administrer votre site – crée en un rien de temps une interface administrateur complète avec création, modification, suppression, affichage et recherche dans les modèles de votre application et en plus il est pas mal customisable en fouillant un peu (ça fera peu être l’objet d’un autre article).
  • Translate-rails3 pour traduire votre application – Ici plus besoin d’aller modifier directement vos fichiers de traduction, vous avez une interface pour ça qui vous indique les traductions qu’il vous reste à faire et je crois même que l’on peut y intégrer google translate.

Voila pour cet article un peu long mais qui au final fait gagner tellement de temps et avec toutes ces gems réunies on peut construire des projets ayant de la gueule très rapidement ;)

Petit bonus une bonne partie de ces gems sont réunies dans un template sur mon github du coup vous pouvez les choisir direct dès la création de votre application rails avec un

rails new mon_app -m https://github.com/antho1404/Rails_templates/blob/master/template.rb

Tags: , ,

8 Responses

  1. D'alberto Pierre-Julien

    Merci pour cet article, on en voit de plus en plus souvent, mais c’est toujours trés intéressant.

    Je vais essayer Bullet, Better errors et Translate-rails3 :)

  2. Ah, parmi ces gems il y en a 3 que je ne connaissais pas encore : inherited resources, better_errors qui a l’air très cool, et translate-rails3, mais cette dernière ne semble plus être maintenue à jour :-/

    J’avais trouvé un ScreenCast pour mettre en place rapidement un système permettant de faire la même chose que translate-rails3 : http://railscasts.com/episodes/256-i18n-backends?view=asciicast

    Aussi, j’ajouterai en complément de SimpleForm, les gems : nested-form et client-side-validations (qui possède un plugin pour SimpleForm).

    Toujours sympathique de découvrir de nouvelles gems, merci pour cet article. ;)

    • antho1404

      En effet translate-rails3 n’est plus maintenue, mais étant donné que c’est juste une interface pour mettre à jour ses fichiers de traductions, il faut pas énormément d’ajouts ou autre. Concernant i18n-bakends c’est pas tout à fait pareil, ici les traductions ne seront pas stockées dans les fichiers YML mais en base de donnée.
      Quoi qu’il en soit, ravis de voir que certain articles plaisent :)

  3. Pingback: Mes gems utiles | Webosphère | Scoop.it

  4. Pingback: Ruby | Pearltrees

  5. Juste une petite astuce si quelqu’un veut installer la gem better errors et qu’il est comme moi, sous windows en utilisant une VM linux, il y’a un patch à faire pour que celle-ci fonctionne (je donne la soluce, car j’ai mis un peu de temps à trouver)

    https://gist.github.com/ericboehs/4735037

    HF ! :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>