2009-07-10 19 views

Respuesta

10

puede colocarlos en config/environment.rb:

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

Si tiene grandes cantidades de constantes globales, esto puede ser un poco incómodo. Considere la posibilidad de obtener un archivo YAML o mantener las constantes en la base de datos.

EDIT: respuesta

weppos' es la mejor respuesta.

Mantenga sus constantes en un archivo en config/inicializadores/*. RB

63

Rieles> = 3, la aplicación es en sí mismo un módulo (que viven en config/application.rb). Se pueden almacenar en el módulo de aplicación

module MyApplication 
    SUPER_SECRET_TOKEN = "123456" 
end 

A continuación, utilice MyApplication::SUPER_SECRET_TOKEN hacer referencia a la constante.


Rails> = 2,1 & & < 3 usted debe colocarlos

  1. en /config/initializers cuando la constante tiene el alcance aplicaciones
  2. cuando la constante se refiere a un modelo/controlador/ayudante específico que puede incluirlo dentro de la clase/módulo en sí

Antes del soporte de Rails 2.1 y initializers, los programadores se usaban para colocar las constantes de la aplicación en environment.rb.

He aquí algunos ejemplos

# 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

extraño, pero no funciona. Aunque constants.rb se ejecuta en el inicio, no puedo acceder a SUPER_SECRET_TOKEN en controladores o vistas. –

+6

Ahora eso es gracioso. ¿Quién sabría que la 'mayúscula' de esas constantes se impone en los rieles? –

+5

Nota: no olvide reiniciar su servidor después de hacer una nueva constante. De lo contrario, ¡no se mostrará correctamente! –

Cuestiones relacionadas