ActiveWeekly #1
- François
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.