2009-07-10 10 views

risposta

10

Le puoi mettere in config/environment.rb:

Rails::Initializer.run do |config| 
    ... 
    SITE_NAME = 'example.com' 
end 

Se si dispone di una grande quantità di costanti globali, questo può essere disordinato. Prendi in considerazione l'approvvigionamento da un file YAML o mantenendo le costanti nel database.

EDIT: risposta

weppos' è la risposta migliore.

Mantenete il vostro costanti in un file in config/inizializzatori/*. RB

63

Rails> = 3, l'applicazione è di per sé un modulo (che vive in config/application.rb). È possibile memorizzare nel modulo applicativo

module MyApplication 
    SUPER_SECRET_TOKEN = "123456" 
end 

Quindi utilizzare MyApplication::SUPER_SECRET_TOKEN per fare riferimento alla costante.


Rails> = 2.1 & & < 3 si dovrebbe metterli

  1. nel /config/initializers quando la costante ha l'applicazioni portata
  2. quando la costante si riferisce ad un modello specifico/regolatore/assistente voi può spaziarlo all'interno della classe/modulo stesso

Prima del supporto di Rails 2.1 e initializers, i programmatori venivano utilizzati per posizionare le costanti dell'applicazione in environment.rb.

Ecco alcuni esempi

# config/initializers/constants.rb 
SUPER_SECRET_TOKEN = "123456" 

# helpers/application_helper.rb 
module ApplicationHelper 
    THUMBNAIL_SIZE= "100x20" 

    def thumbnail_tag(source, options = {}) 
    image_tag(source, options.merge(:size => THUMBNAIL_SIZE) 
    end 

end 
+2

strano, ma non funziona. Anche se constants.rb viene eseguito all'avvio, non riesco ad accedere a SUPER_SECRET_TOKEN in controller o viste. –

+6

Ora è divertente. Chi lo saprebbe che l''uppercaseness' di quelle costanti viene applicata su rotaie? –

+5

Nota: non dimenticare di riavviare il server dopo aver eseguito una nuova costante. Altrimenti, non verrà visualizzato correttamente! –

Problemi correlati