2009-03-24 20 views

risposta

37

Un modo per fare ciò è creare un file allo lib/rails_extensions.rb. Quindi, aggiungere le estensioni in questo modo:

class Array 
    def bring_me_food 
    # ... 
    end 

    def make_tea 
    # ... 
    end 
end 

class Hash 
    def rub_my_shoulders 
    # ... 
    end 
end 

Poi, nel config/environment.rb, aggiungere questo:

require 'rails_extensions' 

tuo chilometraggio con oggetti asserviti può variare.

+1

Questo è quello che stavo cercando, grazie. Ho trovato, tuttavia, che questo funziona solo quando inserisco la riga di richiesta nella parte inferiore di config/environment.rb – inglesp

+2

Sei fortunato ad avere Hash e Array di questo tipo nel tuo ambiente. –

0

Basta inserirlo in un nuovo file, ad es. array_extended.rb

class Array 

    def my_new_method() 
    ... 
    end 

end 

Dopo di che è possibile includere questo file con require "array_extended.rb". Assicurarsi di non sovrascrivere i metodi già esistenti in quanto ciò potrebbe compromettere altre funzionalità.

+1

Ma dove si inserisce richiede "array_extended.rb"? Questa è stata la mia domanda davvero. – inglesp

6

Per impostazione predefinita, quando si chiama "richiedono", Rails cercherà nella (dalla sorgente bordo Rails):

app app/metallo app/modelli app/controller app/aiutanti app/servizi lib vendor

per semplicità, mettere il file in lib /, e richiedono per nome nella configurazione/environment.rb, oppure si può mettere in config/inizializzatori/array_extension.rb, ed e' verrà automaticamente caricato.

Dove lavoro, abbiamo inserito tutte le nostre estensioni nella libreria di base di Ruby in un plug-in e memorizzato in (Rails.root /) fornitore/plug-in/utilità/lib/core_ext, quindi è necessario estensioni individuali nel init.rb del plugin.

Un altro modo per scuoiare questo gatto: se dici, desidera memorizzare le estensioni di base in Rails.root/core_ext, allora si può aggiungere che il percorso come un percorso di carico nel blocco di configurazione in environment.rb:

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

Quindi è possibile chiamare "require 'array_extension'" da qualsiasi luogo e verrà caricato.

Problemi correlati