ActiveWeekly #2
- François
Deuxième semaine d’ActiveDaily, une astuce quotidienne sur ActiveSupport et ActiveModel.
Vous pouvez suivre l’ActiveDaily sur github ou bien lire ces billets de blog hebdomadaire.
ActiveSupport::Callbacks
Les callbacks permettent de facilement rajouter des points d’entrées dans vos classes.
require 'active_support/callbacks.rb'
class Bim
include ActiveSupport::Callbacks
define_callbacks :kick
def kick
run_callbacks :kick do
puts 'BIMMMMMMMMM!'
end
end
end
class Norris < Bim
set_callback :kick, :before, do |chuck|
puts 'Be careful'
end
set_callback :kick, :after do |chuck|
puts 'KO'
end
end
chuck = Norris.new
chuck.kick # Your are KO baby
Bon dans Rails toute cette logique est utilisé dans ActiveModel, rendez vous la semaine prochaine :).
ActiveSupport::OrderedOptions
OrderedOptions vous permet de setter des paramètres de config d’une manière assez facile.
require 'active_support/ordered_options'
options = ActiveSupport::OrderedOptions.new
options.chuck = 'norris'
options[:chuck] # norris
Les options dans Rails sont gérès de cette manière.
Hash#slice
Il peut être pratique de filtrer les clés d’un Hash.
require 'active_support/core_ext/hash/slice'
hash = Hash.new
hash['chuck'] = 'norris'
hash['bruce'] = 'lee'
hash['roger'] = 'hanin' # my real idol
hash.slice('bruce', 'roger')
D’ailleurs vous pouvez le combinez avec le HashWithIndifferentAccess.
hash.with_indifferent_access.slice(:bruce, :roger)
Object#try
Si vous en avez assez de tester sans cesse si la variable que vous avez est nil, vous pouvez utiliser try.
require 'active_support/core_ext/object'
a = nil
a.try(:size) # nil
b = "plop"
b.try(:size) # 4
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.