2009-03-24 9 views

Respuesta

37

Una forma de hacerlo es crear un archivo en lib/rails_extensions.rb. A continuación, añadir las extensiones de este modo:

class Array 
    def bring_me_food 
    # ... 
    end 

    def make_tea 
    # ... 
    end 
end 

class Hash 
    def rub_my_shoulders 
    # ... 
    end 
end 

Luego, en config/environment.rb, añadir lo siguiente:

require 'rails_extensions' 

Su kilometraje con objetos subordinados puede variar.

+1

Eso es lo que estaba buscando, gracias. Sin embargo, descubrí que esto solo funciona cuando coloco la línea requerida en la parte inferior de config/environment.rb – inglesp

+2

. Tiene suerte de tener tales Hash y Array de servicio en su entorno. –

0

Simplemente póngalo en un archivo nuevo, p. array_extended.rb

class Array 

    def my_new_method() 
    ... 
    end 

end 

Después de que puede incluirse a este archivo con require "array_extended.rb". Asegúrese de no anular los métodos ya existentes, ya que esto puede romper otras funciones.

+1

Pero, ¿dónde pones requiere "array_extended.rb"? Esa fue mi pregunta realmente. – inglesp

6

Por defecto, cuando se llama a "exigir", rieles se verá en (desde el origen de eje Rieles):

app app/metal app/models app/controllers app/helpers app/servicios lib proveedores

Para simplificar, poner el archivo en lib /, y requieren por su nombre en tu config/environment.rb, o puede ponerlo en config/inicializadores/array_extension.rb, y' ll se cargará automáticamente

Donde trabajo, hemos puesto todas nuestras extensiones en la biblioteca principal de Ruby en un complemento, y las hemos almacenado en (Rails.root /) vendor/plugins/utilities/lib/core_ext, y luego requerimos el extensiones individuales en el init.rb del complemento

Otra forma de piel de este gato: si usted dice, quieren almacenar sus extensiones centrales en Rails.root/core_ext, a continuación, puede agregar ese camino como ruta de carga en el bloque de configuración en environment.rb:

Rails::Initializer.run do |config| 
    config.load_paths << 'core_ext' 
end 

Luego puede llamar a "require 'array_extension'" desde cualquier lugar, y se cargará.

Cuestiones relacionadas