ActiveWeekly #1

Cet article a été précédemment publié a cette adresse http://dev.af83.io/2011/10/28/activeweekly-1.html.

Dans la lignée du GitDaily, il y a désormais l’ActiveDaily, un voyage dans le monde d’ActiveSupport et d’ActiveModel.

Vous pouvez suivre le ActiveDaily sur github ou bien lire ces billets de blog hebdomadaire.

Les exemples ont été testé avec ruby 1.9.2.

Pour bien démarrer :

gem install activesupport i18n # Oui il faut i18n pour que activesupport fonctionne a peu près correctement
gem install pry # pour le plaisir

Pour exécuter les exemples :

pry # ou irb
require 'active_support/all' # oui un underscore :(

Blank?

Pour savoir si un objet est vide. C’est à dire soit false, empty, contenant seulement des espaces, …

require 'active_support/all' # violent mais efficace, sinon require 'active_support/core_ext/object'

nil.blank? # true
"".blank? # true
"\n".blank? # true
false.blank? # true
[].blank? # true
{}.blank? # true
true.blank? # false
"Chuck".blank? # false

ActiveSupport::Duration

ActiveSupport Duration permet de manipuler d’une manière plutôt sympathique le temps.

require 'active_support/all' # violent mais efficace, sinon require 'active_support/core_ext/object' et require 'active_support/duration'

1.month.ago # months, days/day, hour/hour ...
1.month.since(2.hours.ago) # Calcul simple
(1.month + 1.day).ago

Le calcul simple ou la configuration de date devient plus lisible.

Devise l’utilise par exemple pour configurer le délai maximum de confirmation de l’email:

config.confirm_within = 2.days

HashWithIndifferentAccess

Les HashWithIndifferentAccess permettent de manipuler les clés indifféremment avec un symbole ou la clé originale.

require 'active_support/hash_with_indifferent_access'

h = HashWithIndifferentAccess.new # {}
h[:chuck] = "Norris" # "Norris"
h[:chuck] # "Norris"
h["chuck"] # "Norris"

On me dit que c’est utilisé entre autre pour le hash params dans Rails.

ActiveSupport::MessageVerifier

Pour générer des tokens d’accès et vérifier leur authenticité, MessageVerifier est fait pour vous.

require 'active_support/message_verifier'

v = ActiveSupport::MessageVerifier.new("houhou this is a secret")
token = v.generate(["chuck", "norris"]) # you get an unreadable string
chuck, norris = v.verify(token)

Dans le cas d’un token qui a été modifié, la signature devient invalide, une exception est alors jeté.

ActiveSupport::MessageVerifier::InvalidSignature

Dans un contexte Rails, vous pouvez utiliser le secret_token de l’application :

ActiveSupport::MessageVerifier.new(Rails.configuration.secret_token)

Si vous devez encore plus protéger les données, vous pouvez utiliser MessageEncryptor qui dispose d’une API similaire.

ActiveSupport::StringInquirer

Vous avez envie de poser des questions à vos chaines de caractères ? StringInquirer est fait pour cela.

require 'active_support/all'

chuck = "norris".inquiry # équivalent a ActiveSupport::StringInquirer.new("norris")
chuck.norris? # true
chuck.other? # false

Vous savez désormais comment fonctionne l’interrogation de la production?.

Vous avez une astuce sous le coude que vous désirez partager ? Envoyez la moi et elle se retrouvera peut être dans un prochain ActiveDaily. Seule les astuces sur ActiveSupport et ActiveModel seront incluse (sauf si vous arrivez a me convaincre).

Have a comment? Contact me by email.