1 juin 2026 — code, gem, opensource, ruby
In my tin_valid gem, this simple automated Ruby test never stops to make me smile:
RSpec.describe "README" do
readme = File.read(File.join(__dir__, "../README.md"))
code_blocks = readme.scan(/```rb\n(.*?)\n```/m).flatten
code_blocks.each do |code|
it "returns true for code #{code.inspect}" do
expect(eval(code)).to be(true)
end
end
end
Now I can be sure that the Ruby code examples in the README will stay up to date and valid. Simple as that.
9 mars 2021 — active record, rails, ruby, sql, wev development
When a database query cannot be described using Ruby on Rails’ short ActiveRecord syntax, consider building your queries using Arel instead of going for raw SQL strings.
This has the following advantages:
"users"."email" instead of email in your queries helps you be future-proof by making queries that won’t break when you merge queries together or add columns with conflicting names."users"."email" ASC instead of email asc. This makes it easier to search through logs and can help caching mechanisms.18 avril 2020

I created a Ruby gem called Actor. It helps you harmonize your application’s service objects.
Service objects are a way of making your web applications grow in complexity while keeping your controllers and models thin. For that you’d create classes that represent your actions, for example, CreateComment, PlaceOrder, DestroyUser, etc.
At the start, these actions might hold very little code and look a lot like a regular controller. But as your app grows, you’ll realize that something simple like creating a comment can turn into a serie of actions:
These actions deserve a way of being represented as first-class citizens in your application. That’s where actor comes into play!
Suite de l’article…10 mai 2019 1 commentaire — bienveillance, management, revue de code, valeurs

Voici un mode d’emploi sur mon travail en tant que Lead Développeur à KissKissBankBank.
Même si l’exercice est un peu étrange, l’idée derrière l’écriture de ce « Manager README » est de partager mes valeurs et mes attentes afin d’être plus transparent et de mieux travailler ensemble. Allez, c’est parti.
8 juillet 2015 1 commentaire — gem, github, i18n, rails, url

Les URLs de votre site sont visibles et méritent autant d’attention que le reste de votre interface. Dans ce cas, pourquoi avoir des chemins en anglais uniquement alors que le reste de votre site est traduit ?
https://monsite.com/en/books/1/edit
https://monsite.com/fr/books/1/edit
https://monsite.com/es/books/1/edit
Je trouve que les adresses suivantes, traduites, sont plus élégantes et compréhensibles par tous :
https://monsite.com/en/books/1/edit
https://monsite.com/fr/livres/1/éditer
https://monsite.com/es/libros/1/editar
Mieux, non ?
Pour avoir des URLs pareilles avec Ruby on Rails sans pour autant tout dupliquer, j’ai développé la gemme route_localize.
Une fois installée, il suffit d’entourer les routes à traduire dans config/routes.rb :
scope localize: %w(en fr es) do
resources :books
end
Vous pouvez ensuite traduire les chemins que vous voulez dans vos fichiers de localisation :
fr:
routes:
books: livres
edit: éditer
Et voilà ! Magie !
Enfin, si vous souhaitez faire passer vos utilisateurs d’une langue à l’autre sur votre site un petit helper prends la langue voulue et vous retourne le chemin traduit.
6 juillet 2015 — authentification, gem, github, i18n, opensource, rails, ruby

J’ai créé une petite gemme Ruby. Son petit nom c’est devise-track_locale. Si vous utilisez Ruby on Rails et Devise sur un site multilangue, cela vous permets d’enregistrer la dernière langue utilisée par l’utilisateur, automatiquement.
C’est un module Devise, donc son installation est aussi simple que d’ajouter :track_locale dans la liste de modules Devise et un champ locale sur les utilisateurs.
Ce n’est pas grand chose, mais plutôt que de garder cette fonctionnalité sur un site j’en ai fait une petite librairie externe, réutilisable, open-source, testée. Et je compte bien en faire autant pour tous ces petits développements qui sortent des fonctionnalités du cœur de mes sites.
17 mars 2015 — ember, javascript, webdev
Trois choses à retirer de la Keynote d’ouverture d’EmberConf 2015 à propos du framework JavaScript Ember :

Toutes les nouvelles features de la version 2 d’Ember sont déjà dans la version 1. Cette nouvelle version va juste retirer les warnings. Du coup la mise à jour d’Ember peut se faire de façon beaucoup plus graduelle et rétrocompatible. Si on compare ça à Angular, la version 2 ne sera pas du tout compatible et introduit énormément de nouvelles façons de faire d’un coup.
4 septembre 2014 2 commentaires — chat, emails, gem, github, paris, peach, rails, ruby
À la dernière conférence Paris.rb je présentais 6 choses à arrêter de faire si vous envoyez des emails avec votre application Ruby on Rails.
9 août 2014 5 commentaires — css, future-friendly, html, web
L’HTML et le CSS de ce blog ont été écrits en 2006. En années Internet c’est comme si je l’avais fait il y a 3042 ans.
À cette époque l’iPhone n’existait pas encore et on ne se préoccupait pas de savoir si un site fonctionnait sur son assistant personnel ou pas. La première mention de Responsive Web Design date de 2010 (il y a 520 ans environ). Essentiellement il s’agit de transformer un site pour qu’il puisse s’adapter de façon fluide à toutes tailles d’écrans.
Transformer quelque chose qui n’a pas été pensé mobile first n’est pas chose facile, alors un vieux site au CSS croupissant, cela paraît insurmontable.
6 août 2014 2 commentaires — class, css, selectors

CSS permets d’utiliser plein de sélecteurs raffinés pour ajouter du style à vos éléments. Je soutiens qu’il faut éviter autant que possible d’utiliser quoi que ce soit d’autre que le sélecteur de classes (.foo).
Pour que vos styles soit réutilisables et ne soit plus aussi liés à votre HTML fini donc d’utiliser des sélecteurs d’identifiants, de balises, d’attributs ou de parenté.
Voici pourquoi.
25 juillet 2014 3 commentaires — images, rails, ruby, wordpress
Si vous pouvez extraire la couleur dominante d’une photo, vous pouvez améliorer la perception du chargement de votre site en vous servant de celle-ci tant que votre image n’est pas chargée.
Voici un exemple sur cults3d.com :

En HTML, le plus simple est d’appliquer la couleur dominante sur son style inline. C’est cette couleur qui apparaîtra durant le chargement
<img style="background: #f3de56" src="…" width="120" height="120" />
Si vous utilisez la librairie CarrierWave dans votre application Rails, vous pouvez extraire facilement la couleur dominante à chaque upload grâce à ma gemme ruby carrierwave-color.
Si vous utilisez WordPress, ajoutez l’extension dominant-color et ça sauvegardera la couleur dominante à chaque upload de medias. Vous pourrez même éditer la couleur choisie, directement dans l’administration.