Esta mañana, poniendome al día con la blogesfera, dí con este pequeño y genial hack para hacer nuestros metodos algo más semanticos:
class Object
define_method :not do
Not.new(self)
end
class Not
private *instance_methods.select { |m| m !~ /(^__|^\W|^binding$)/ }
def initialize(subject)
@subject = subject
end
def method_missing(sym, *args, &blk)
!@subject.send(sym,*args,&blk)
end
end
end
Y bueno, los ejemplos más sencillos no pueden ser:
usuario.not.visible?
usuario.not.admin?
Me encanta ^_^!
Fuente: http://blog.jayfields.com/2007/08/ruby-adding-not-method-for-readability.html