ruby on rails - tutorial - Dónde colocar variables globales en Rails 3
rails before_action (5)
Solía poner variables globales en environment.rb con mi aplicación Rails 2.3.8, como:
MAX_ALLOWD_ITEMS = 6
Parece que no funciona en Rails 3. Intenté ponerlo en application.rb y eso no ayudó.
¿Que sugieres?
No sé si la solución de agregar variables a environment.rb funcionaría en Rails3, para ser específico, si no has definido la variable dentro de una definición de módulo así:
module MyConfig
Max_ints = 5
end
no podrá usar Max_ints, si solo lo incluye como una definición simple. 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 variable permanente en Rails
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.
Normalmente voy con application_helper.rb Esto es lo que parece:
module ApplicationHelper
def my_global_variable
my_global_variable = "Helloworld!"
end
end
Entonces puedo poner my_global_variable en cualquier lugar como una función.
Si realmente lo está definiendo en config / environment.rb como usted dice, la única forma en que puedo duplicar su problema es corriendo un servidor usando el rails server
, luego agregando la variable a config / environment.rb , haciendo referencia a ella en un ver o controlar en alguna parte y luego intentar 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.
Si ya ha intentado reiniciar su servidor como sugirió Ryan, intente ponerlo en su application.rb
esta manera:
module MyAppName
class Application < Rails::Application
YOUR_GLOBAL_VAR = "test"
end
end
Luego puede llamarlo con el espacio de nombres en sus controladores, vistas 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. Luego puede acceder a estas configuraciones en cualquier lugar de su aplicación de rieles con:
Settings.my_setting