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.
23 juillet 2014 — rack, rails, robots, ruby, web, webdev
Ces derniers jours je recevait une trentaine d’emails par jour m’indiquant qu’une erreur avait éclatée sur cults3d.com. Ces exceptions provenaient toutes d’un robot chinois, EasouSpider, qui parcoure le Web pour remplir son moteur de recherche.
Ce robot ne sait pas parler l’unicode comme tout le monde et envoie dans les formulaires des valeurs mal encodées, ce qui fâche Ruby on Rails. Le problème est surtout que Rails ne traite l’erreur que bien trop tard, lorsqu’on essaie de lire les paramètres de la requête. Et là l’erreur est une incompréhensible ArgumentError
:
invalid %-encoding (Q/B0*ÜHܘ0ÅÅ1 0 U GB1 0 U.…
17 juillet 2014 3 commentaires — i18n, rails, ruby, webdev
J’utilise Locale avec Ruby on Rails pour permettre à n’importe qui dans l’équipe de modifier les textes d’un site quelle que soit la langue.
Néanmoins, ce n’est pas évident pour celui qui n’a pas le code sous les yeux de retrouver quel texte correspond à quelle clef.
14 juillet 2014 — rails, ruby, sécurité, webdev
Faire un lien dans un email dans une application Ruby on Rails devrait être aussi simple que de faire un lien dans le reste de l’application, non ?
6 février 2014 8 commentaires
Parce que vous voulez inclure des liens de partage sans que ça ne vienne importer 1 Mo de JavaScript sur votre page, voici des liens de partages. Sans balise script. Rien que des liens. Simple.
Ne pas oublier d’URL-encoder chaque paramètre, comme dans les exemples.
16 juin 2013 1 commentaire
Sites sans favicon : Boo!
Le favicon est un endroit assez délaissé dans une page Web alors que c’est parfois la seule indication visuelle permettant aux utilisateurs de de se retrouver dans ses onglets.
Sur Edith j’ai choisi de représenter la page en cours directement dans le favicon, en le mettant à jour à chaque caractère tapé.
favicon qui change à la volée sur Edith
Trop facile.
toDataURL()
pour transformer le canvas en data:image/png;base64,iVBORw0…
<link rel="icon" href="…" />
de la page en cours.Noter que pour qu’il soit mis à jour instantanément Firefox a besoin qu’on supprime et qu’on recréer la balise link
.
Exemple dans le CoffeeScript utilisé sur Edith.
Fonctionne là où canvas et les datauri fonctionnent, soit IE9+.
14 novembre 2012 — 404, errors, exceptions, rails, ruby
Utiliser un fichier statique public/404.html
dans Rails est très vite limitant. Si on veut utiliser le layout normal de l’application, des informations dynamiques comme des menus, le nom de l’utilisateur courant ou un formulaire de recherche il faut rendre ces erreurs dynamiques.
Pour ça il faut intercepter deux erreurs qui produisent des 404 : les infos nos trouvées dans la base via ActiveRecord::RecordNotFound
et les routes qui n’existent pas avec ActionController::RoutingError
.
Suite de l’article…
5 mai 2011 1 commentaire
Pour continuer de célébrer le jour de Star Wars voici de gros boutons de sons en HTML5 grâce à bigbuttons :
9 décembre 2010 18 commentaires — bonnes pratiques, parisweb, performances, serveurs, webdev
Il y a mieux à faire
les vendredis…
Merci.
2 décembre 2010 3 commentaires — calendrier, html, html5, javascript, noël, performance, typographie, veille
Un mois à 24 jours
Ça y est, décembre est lancé. Et avec les premières neiges on a envie de rester au chaud et de lire des bons articles qui parlent du Web, n’est ce pas ?
4 calendriers avec des perles à découvrir chaque jour de décembre :
Typographie, HTML5 et performances : les sujets chaud du Web de cette année sont là pour se tenir au chaud cet hiver jusqu’à Noël.
16 novembre 2010 — clavier, os x, software, textmate
La mise à jour 1.5.10 de TextMate change les raccourcis pour aller à l’onglet précédent et suivant. À la place de ⌥⌘← et ⌥⌘→. Ils sont maintenant ⌘⇧⌥5 and ⌘⇧⌥° sur un clavier français.
La raison pour ce changement est que c’est la façon de changer d’onglet dans Safari. Je sais pas vous mais je préfère les raccourcis précédents et ceux de Firefox…
Changez les raccourcis en allant dans Préférences Système, Clavier, Raccourcis clavier, Raccourcis d’applications et ajoutez vos raccourcis. Choisissez l’application Textmate et entrez les titres de menu « Next File Tab » et « Previous File Tab ».
Et pour couronner le tout, désindenter un bloc de code avec ⌥⇧↦ ne fonctionne plus pour les claviers français à cause d’un bug. Pour le réparer avant d’attendre la prochaine mise à jour ajouter "~$\t" = "shiftLeft:";
dans /Applications/TextMate.app/Contents/Resources/KeyBindings.dict
Après cette mise à jour les développeurs de Textmate se sont « rendus compte que tout le monde n’utilisait pas un clavier US » et ont donc remis les raccourci précédents ainsi que réparé le second bug d’indentation. Sigh.
est un développeur web vivant à Paris — Contact — Archives
Textes et contenus sous licence Creative Commons.