2010-08-30 16 views
24

solía poner las variables globales en environment.rb con mis Rails 2.3.8 aplicación como:Dónde poner las variables globales en Rails 3

MAX_ALLOWD_ITEMS = 6 

No parece trabajar en Rails 3. I intenté ponerlo en application.rb y eso no ayudó.

¿Qué es lo que sugiere?

+0

Lo que está preguntando no es una variable, sino una constante, lo que significa: no se puede configurar desde la aplicación. Aquí, el motor de búsqueda me malinterpretó porque aquí se usa el término equivocado. – Paul

Respuesta

46

Si ya ha intentado reiniciar el servidor como sugirió Ryan, trate de ponerlo en su application.rb así:

module MyAppName 
    class Application < Rails::Application 
    YOUR_GLOBAL_VAR = "test" 
    end 
end 

Entonces se le puede llamar con el espacio de nombres en sus controladores, puntos de vista o donde sea ..

MyAppName::Application::YOUR_GLOBAL_VAR 

Otra alternativa sería usar algo como settingslogic. Con settingslogic, solo crea un archivo de configuración yml y un modelo (Settings.rb) que apunta al archivo de configuración. A continuación, puede acceder a estos ajustes en cualquier lugar de su aplicación con rieles:

Settings.my_setting 
+3

Creé un complemento inspirado en settingslogic, pero no requiere que crees una clase para la configuración. Solo debe incluir el archivo yml y la clase se crea dinámicamente cuando se inicia el servidor. Aquí está el repositorio: https: // github.com/cowboycoded/yettings – johnmcaliley

+2

No es una variable, sino una constante, lo que significa: no se puede configurar desde la aplicación. Aquí, el motor de búsqueda me malinterpretó porque aquí se usa el término equivocado. – Paul

+0

Esto funciona en rieles 4 ??? –

2

Si usted está realmente definirla en config/environment.rb como usted dice, la única manera de que pueda duplicar su problema es mediante la ejecución de un servidor utilizando rails server, a continuación, poner en la variable a config/environment.rb, haciendo referencia a ella en una vista o controlador en alguna parte y luego tratando de cargar esa parte específica de mi aplicación.

Si detengo el servidor y lo inicio una y otra vez intento acceder a esa vista o controlador, entonces funciona. Creo que no has reiniciado tu servidor.

0

No sé si la solución de añadir variables para environment.rb sería de hecho trabajar en Rails3 - ser específico, si refugio' t define la variable dentro de una definición de módulo, así:

module MyConfig 
    Max_ints = 5 
end 

usted no será capaz de utilizar sólo Max_ints, si sólo es necesario incluirla como una definición desnudo. O al menos eso es lo que descubrí que sucedió cuando experimenté con esto. También creo que la sugerencia de usar los inicializadores/carpeta es posiblemente una mejor solución en términos de facilidad de uso. Ver Permanent variable in Rails

1

Normalmente creo archivos dentro de config/initializers/a yaml (yml) con todas las configuraciones globales del sitio. recuerde reiniciar el servidor cada vez que cambie algo.

7

suelo ir con application_helper.rb Esto es lo que parece:

module ApplicationHelper 
    def my_global_variable 
    my_global_variable = "Helloworld!"  
    end 
end 

Entonces puede poner en cualquier lugar my_global_variable como una función.

Cuestiones relacionadas