Dove mettere le variabili globali in Rails 3

Ho usato per mettere le variabili globali in environment.rb con la mia applicazione Rails 2.3.8 come:

MAX_ALLOWD_ITEMS = 6 

Non sembra funzionare in Rails 3. Ho provato a metterlo in application.rb e questo non ha aiutato.

Che cosa suggerisci?

Se hai già provato a riavviare il server come suggerito da Ryan, prova a inserirlo nel tuo file application.rb questo modo:

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

Quindi puoi chiamarlo con lo spazio dei nomi nei tuoi controller, visualizzazioni o ovunque ..

 MyAppName::Application::YOUR_GLOBAL_VAR 

Un'altra alternativa sarebbe usare qualcosa come settingslogic . Con settingslogic, devi solo creare un file di configurazione yml e un modello (Settings.rb) che punti al file di configurazione. Quindi puoi accedere a queste impostazioni ovunque nella tua app di rotaie con:

 Settings.my_setting 

Di solito vado con application_helper.rb Ecco come appare:

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

Quindi posso inserire my_global_variable ovunque come funzione.

Se la definisci veramente in config / environment.rb come dici tu, l’unico modo in cui posso duplicare il tuo problema è eseguire un server usando il rails server , quindi inserire la variabile in config / environment.rb , riferendola in un vista o controller da qualche parte e quindi cercando di caricare quella parte specifica della mia applicazione.

Se interrompo il server e lo avvio nuovamente, provo ancora ad accedere a quella vista o controller, quindi funziona. Suppongo che tu non abbia ancora riavviato il tuo server.

Generalmente creo file config / initializer / yaml (yml) all’interno di tutte le impostazioni globali del sito. ricorda di riavviare il server ogni volta che cambi qualcosa.

Non so se la soluzione di aggiungere variabili ad environment.rb funzionerebbe di fatto in Rails3 – per essere specifica, se non hai definito la variabile all’interno di una definizione di modulo in questo modo:

 module MyConfig Max_ints = 5 end 

non sarai in grado di utilizzare solo Max_ints, se lo includi semplicemente come definizione. O almeno è quello che ho trovato successo quando ho sperimentato questo. Penso anche che il suggerimento di utilizzare la cartella / inizializzatori sia probabilmente una soluzione migliore in termini di facilità d’uso. Vedi Variabile permanente in Rails