yml tutorial rails only i18n before_action ruby-on-rails ruby-on-rails-3 global-variables

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