Cache Ruby on Rails et I18n

Lorsque l’on regarde les guides de mise en place du cache sur une application Rails, en général on se retrouve face à ce genre d’exemple :

<% cache(product) do %>
  <!-- here the markup for a single product -->
<% end %>

L’appel à cache permet de ne pas perdre de temps à recalculer le morceau de template pour un produit tant que celui-ci n’a pas été modifié.

Le souci est que si vous gérez une application multi-lingue, un bug se dissimule dans ce simple bout de code…

Lire la suite…

Gérer l'upload de fichiers dans Postgres avec Sequel et Refile

Lors d’un récent projet, l’un des impératifs était de stocker les fichiers en base de données. Pas d’accès à S3 ou un autre type de stockage, tout en base de données.

Heureusement pour nous, Postgres propose la gestion des Large Objects.

Pour ce projet nous utilisions Sequel pour accéder à la base de données et Refile pour la gestion des uploads.

Il nous restait donc à brancher tout ce petit monde pour que ce système de stockage fonctionne.

Lire la suite…

Quoi de neuf dans Ruby 2.3 ?

Un an a passé depuis la sortie de Ruby 2.2. C’est maintenant au tour de Ruby 2.3 de montrer le bout de son nez. Heureusement, pour les fêtes, cette nouvelle version n’arrive pas les mains vides !

Nouveaux opérateurs, nouvelles méthodes et un nouveau pragma pour apporter un peu de givre durant cet hiver bien chaud.

Lire la suite…

Quoi de neuf dans Ruby 2.2 ?

En cette fin d’année 2014, les rubyists ont eu la joie de trouver sous le sapin la toute dernière version de Ruby. En effet, c’est le 25 décembre qu’a été publié Ruby 2.2.0.

Cette nouvelle mouture apporte en particulier un important changement en termes de performances mais contient aussi quelques nouveautés et corrections de bugs.

Nous vous proposons un petit tour d’horizon de ce qui a changé.

Lire la suite…

Unidecoder et UTF-8

Lorsque le besoin de “latiniser” des caractères non alphabétiques se présente, la première gem sur laquelle on tombe est Unidecoder. Cette dernière permet de faire ce que l’on appelle de la translittération, c’est-à-dire retranscrire un caractère d’un alphabet à un autre.

On peut par exemple translittérer le “你好” chinois en “Ni Hao” ou encore le “Привет” russe en “Priviet”.

"你好".to_ascii    #=> "Ni Hao "
"Привет".to_ascii #=> "Priviet"

Unidecoder permet donc d’effectuer cette transformation de caractères UTF-8 vers ASCII. Pour comprendre ce processus il faut tout d’abord savoir ce qu’est UTF-8 et comment il fonctionne.

Lire la suite…

Remplacer Pow par Invoker

Invoker est un outil permettant de gérer les processus qui composent votre environnement de développement. Il permet de remplacer à la fois Pow et Foreman.

Pow est un très bon outil permettant de gérer vos applications Rack et Ruby on Rails. Il permet d’y accéder via un domaine en .dev en créant simplement un lien symbolique. Cependant, une application ne dépend pas uniquement du code applicatif. Postgres, Redis ou encore Sidekiq sont autant de dépendances qui doivent tourner pour que tout fonctionne.

Foreman répond à ce besoin en permettant de gérer tous ces processus de façon centralisé grâce à un fichier Procfile listant les commandes à utiliser :

pg: postgres -D vendor/postgresql
sidekiq: bundle exec sidekiq -C ./config/sidekiq.yml
redis: redis-server

Invoker propose une alternative permettant de fournir ces deux fonctionnalités et plus encore.

Lire la suite…