tutorial programas metodos ejemplos asignacion ruby ruby-on-rails-3 monkeypatching

programas - metodos en ruby



En Rails, ¿cómo agregar un nuevo método a la clase String? (3)

Quiero construir un índice para diferentes objetos en mi proyecto Rails y me gustaría agregar un método ''count_occurences'' al que pueda llamar en objetos String.

Vi que podía hacer algo como

class String def self.count_occurences do_something_here end end

¿Cuál es la forma exacta de definir este método y dónde colocar el código en mi proyecto de Rails?

Gracias



Puede definir una nueva clase en su aplicación en lib/ext/string.rb y poner este contenido en ella:

class String def to_magic "magic" end end

Para cargar esta clase, deberá config/application.rb en su archivo config/application.rb o en un inicializador. Si tenía muchas de estas extensiones, ¡un inicializador es mejor! La forma de cargarlo es simple:

require ''ext/string''

El método to_magic estará disponible en instancias de la clase String dentro de su aplicación / consola, es decir:

>> "not magic".to_magic => "magic"

No se necesitan complementos.


Sé que este es un hilo viejo, pero no parece que la solución aceptada funcione en Rails 4+ (al menos no para mí). Poner el archivo de extensión rb en config / initializers funcionó.

Alternativamente, puede agregar / lib al cargador automático de Rails (en config / application.rb, en la clase Application:

config.autoload_paths += %W(#{config.root}/lib) require ''ext/string''

Vea esto: http://brettu.com/rails-ruby-tips-203-load-lib-files-in-rails-4/