Sobreescribir un método del core del ra ils

Hola, estoy intentando sobreescribir un método del core de rails para
usarlo
dentro de una aplicación pero no se donde colocar el fichero con el
método.
¿Alguien puede ayudarme?

Gracias

On 1/26/07, David C. [email protected] wrote:

Hola, estoy intentando sobreescribir un método del core de rails para usarlo
dentro de una aplicación pero no se donde colocar el fichero con el método.
¿Alguien puede ayudarme?

Yo lo hago en config/environment.rb.

De todas maneras, nos puedes comentar lo que necesitas hacer a ver si
podemos ayudar… :slight_smile:

(Me ha pasado de querer agregar cosas que ya estaban!)

Gracias Damian, quería usar lo que explica Jamis B. en ese artículo
para
hacer unas cosillas pero no tenía muy claro el mejor sitio donde
extender
las clases del core. He probado a dejar el código en el application.rb y
también funciona, pero me parece más limpio dejarlo en el environment :slight_smile:

http://weblog.jamisbuck.org/2007/1/9/extending-activerecord-associations

El Friday 26 January 2007 19:44:10 David C. escribió:

Gracias Damian, quería usar lo que explica Jamis B. en ese artículo para
hacer unas cosillas pero no tenía muy claro el mejor sitio donde extender
las clases del core. He probado a dejar el código en el application.rb y
también funciona, pero me parece más limpio dejarlo en el environment :slight_smile:

O si lo puedes reaprovechar, podrías escribir un pequeño plugin.

Saludos.

Lo de un plugin es la mejor solucion… no solo por reaprovechar…
sino porque puedes ordenar las cosas un poco.

Esto es lo que hacemos en StreetEasy. Tenemos un plugin “interno”
llamado “snippets”. El archivo “init.rb” (que es cargado
automaticamente por rails) contiene:

Dir[File.dirname(FILE) + “/lib/**/*.rb”].each { |file| require
(file) }

Que es una forma simple de decir, busca todos los “punto rb” dentro
del subdirectorio “lib” (y sus subdirectorios internos) y hazle un
“require”.

Dentro de lib, tenemos las cosas ordenadas por “tema”. Hay
subdirectorios para “action_controller”, “array” y “string”, por
ejemplo… y archivos “sueltos” sin subdirectorios. Dentro de “lib/
array” puedes encontrar, por ejemplo “to_hash.rb” que contiene:

class Array
def to_hash
self.inject({}) do |hash, value|
begin
hash[value.first] = value.last
hash
rescue
hash[value] = value
hash
end
end
end
end

o por ejemplo, “active_record/human_name_for.rb”

Graciously contributed by Edgar “Egg” Gonzalez from RubyCorner

module ActiveRecord
class Base
@custom_human_name = {}

 class << self
   def human_name_for(attr_name, human_name)
     @custom_human_name ||= {}
     @custom_human_name[attr_name.to_s] = human_name.to_s
   end

   def human_attribute_name_with_customization(attribute_key_name)
     return @custom_human_name[attribute_key_name] unless

@custom_human_name.nil? or @custom_human_name[attribute_key_name].nil?
human_attribute_name_without_customization(attribute_key_name)
end

alias_method :human_attribute_name_without_customization, :human_attribu
te_name

alias_method :human_attribute_name, :human_attribute_name_with_customiza
tion
end

end
end

Y asi vamos… creando pequeños archivos con pequeñas funciones…
breves comentarios explicando que hace y de donde vino.