me gustaría añadir método nil_or_empty?
a todas las clases, por lo tanto, defino¿Cómo extender la clase Object en Rails?
module ObjectExtensions
def nil_or_empty?
return self.nil? || (self.respond_to?('empty?') && self.empty?)
end
end
::Object.class_eval { include ::ObjectExtensions }
Funciona bien en un simple script de Ruby
p nil.nil_or_empty? #=> true
p ''.nil_or_empty? #=> true
p [].nil_or_empty? #=> true
p 0.nil_or_empty? #=> false
Sin embargo, cuando lo añado a mi archivo de biblioteca lib/extensions.rb
en una aplicación Rails 3, parece que no se añadirán
NoMethodError (undefined method `nil_or_empty?' for nil:NilClass):
app/controllers/application_controller.rb:111:in `before_filter_test'
hago cargar el archivo de biblioteca (todos los demás extensio ns de ese archivo funcionan bien) y
# config/application.rb
# ...
config.autoload_paths << './lib'
¿Dónde estoy equivocado?
posible duplicado http://stackoverflow.com/questions/5654517/in-ruby-on-rails-to-extend-the-string-class-where-should-the-code-be-put-in –