Vulnérabilité dans la gem mini_magick version < 4.9.4

Extrêmement populaire, puise que la dernière version avant le correctif a été téléchargée prêt d’un million de fois, mini_magick, qui permet de donner facilement accès aux outils de ImageMagick pour manipuler facilement les images, possédait une vulnérabilité qui permettait d’exécuter du code arbitrairement sur les serveurs.

Mettez immédiatement à jour la gem pour appliquer le correctif.

Continuer la lecture de Vulnérabilité dans la gem mini_magick version < 4.9.4

Imprimer et mettre à jour des lignes de log sur le terminal

Avez-vous déjà lancé une commande dans le terminal, qui prend beaucoup de temps à s’exécuter, et ne laisse qu’un curseur clignotant sur fond noir ? Comment savoir si la commande s’exécute ou si elle est bloquée ? Imprimer dans le terminal une ou plusieurs lignes de log permet de surveiller l’avancée de la commande, d’avoir une idée de la durée restante, ou de pouvoir voir s’il y a des erreurs. Cet article est un tour d’horizon sur les moyens les plus simples (et les plus puissants) à notre disposition.

Continuer la lecture de Imprimer et mettre à jour des lignes de log sur le terminal

Vulnérabilité dans la gem strong_password 0.0.7

Si vous utilisez la gem strong_password version 0.0.7 faites immédiatement une mise à jour de tout vos serveurs vers une version supérieure.

La vulnérabilité à été injectée par une personne externe au projet qui a réussi à s’octroyer les droits sur rudygems.org. Très rapidement la communauté open-source a pu détecter l’attaque.

Continuer la lecture de Vulnérabilité dans la gem strong_password 0.0.7

Ruby et son puissant système de template : ERB

Un moteur de template est un système permettant de facilement replacer des variables ou des expressions par des valeurs dans des fichiers ou chaînes de caractères. Ruby fournis dans sa librairie standard un moteur très connu : ERB. Si vous êtes utilisateurs de Rails, vous avez certainement déjà utilisé ERB, Slim ou HAML. Nous allons voir comment en tirer avantage dans des scripts Ruby, ou hors du contexte MVC de Rails.

Continuer la lecture de Ruby et son puissant système de template : ERB

Mise en cache de méthode avec arguments en Ruby

La mise en cache de méthode permet une optimisation facile en évitant l’exécution répétée de code lorsque cela n’est pas nécessaire. La technique est détaillée dans cet article fonctionne pour les méthodes qui ne prennent pas de paramètres. Nous allons voir comment adapter cette technique aux méthodes acceptant les paramètres.

Continuer la lecture de Mise en cache de méthode avec arguments en Ruby

Mise en cache via ||= lorsque la valeur peut être nil ou false

Comme nous l’avons vu dans cet article, il est facile et intéressant de mettre le résultat de l’appel d’une méthode en cache localement dans l’instance d’un objet. Ceci permet de n’exécuter la méthode qu’une seule fois, et de pouvoir récupérer le résultat autant de fois que nécessaire.

Continuer la lecture de Mise en cache via ||= lorsque la valeur peut être nil ou false

Mise en cache du résultat des méthodes d’un objet ou modèle en Ruby

Certaines méthodes peuvent être assez gourmandes lors de leur exécution, et il est parfois nécessaire d’appliquer les méthodes adaptées de mise en cache. La plus commune consiste à enregistrer le résultat de l’appel d’une méthode dans une variable locale, pour pouvoir ensuite utiliser la variable dans le reste du code, comme ceci :

Continuer la lecture de Mise en cache du résultat des méthodes d’un objet ou modèle en Ruby

Valider facilement une adresse IP dans un modèle Ruby on Rails

Valider les attributs des modèles avant de sauvegarder dans la base de données est essentiel. Dans le cas des adresses IP, qu’on parle d’IPv4 ou d’IPv6, la validation par regex peut être longue à écrire, sans parler du risque d’erreur.

Continuer la lecture de Valider facilement une adresse IP dans un modèle Ruby on Rails