2010-08-30 4 views
24

ich eine solche globale Variablen in environment.rb mit meiner Rails 2.3.8 Anwendung setzen verwendet setzen wie:Wo Globale Variablen in Rails 3

MAX_ALLOWD_ITEMS = 6 

Es scheint nicht 3. Ich in Rails zu arbeiten versuchte es in application.rb und das hat nicht geholfen.

Was schlagen Sie vor?

+0

Was Sie fragen, ist nicht Variable, sondern eine Konstante, was bedeutet: Es kann nicht aus der Anwendung heraus festgelegt werden. Ich wurde hier von der Suchmaschine irregeführt, weil hier der falsche Begriff verwendet wird. – Paul

Antwort

46

Wenn Sie bereits versucht haben, den Server neu zu starten, wie Ryan vorgeschlagen, versuchen Sie es in Ihrem application.rb wie folgt setzen:

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

Dann können Sie es mit dem Namensraum in Ihrem Controller, Ansichten aufrufen oder wo auch immer ..

MyAppName::Application::YOUR_GLOBAL_VAR 

Eine weitere Alternative wäre so etwas wie settingslogic verwenden. Mit settingslogic erstellen Sie einfach eine Yml-Konfigurationsdatei und ein Modell (Settings.rb), das auf die Konfigurationsdatei verweist. Dann können Sie diese Einstellungen zugreifen überall in Ihrer Rails-Anwendung mit:

Settings.my_setting 
+3

Ich habe ein Plugin erstellt, das von settingslogic inspiriert wurde, aber es ist nicht erforderlich, eine Klasse für die Einstellungen zu erstellen. Sie müssen nur die XML-Datei einschließen, und die Klasse wird beim Start des Servers dynamisch erstellt. Hier ist das Repo: https: // github.com/cowboycoded/yettings – johnmcaliley

+2

Es ist keine Variable, sondern eine Konstante, was bedeutet: Es kann nicht aus der Anwendung heraus gesetzt werden. Ich wurde hier von der Suchmaschine irregeführt, weil hier der falsche Begriff verwendet wird. – Paul

+0

Das funktioniert auf Schienen 4 ??? –

2

Wenn Sie wirklich es in Config definieren, sind/environment.rb wie Sie sagen, die einzige Art, wie ich Ihr Problem duplizieren kann, ist durch einen Server mit rails server angerannt, dann in den Variablen Config setzen/environment.rb, referenziere es irgendwo in einer Ansicht oder einem Controller und versuche dann, diesen spezifischen Teil meiner Anwendung zu laden.

Wenn ich den Server stop und starten Sie es immer wieder versuchen, auf diese Ansicht oder Controller zuzugreifen, dann funktioniert es. Ich vermute, Sie haben Ihren Server gerade nicht neu gestartet.

0

Ich weiß nicht, ob die Lösung von Variablen environment.rb Zugabe in Rails3 in der Tat arbeiten würde - um genau zu sein, wenn Sie haven‘ t definiert die Variable innerhalb einer Moduldefinition wie folgt:

module MyConfig 
    Max_ints = 5 
end 

Sie nicht in der Lage sein, nur Max_ints verwenden, wenn Sie es einfach als eine bloße Definition umfassen. Zumindest ist es das, was ich gefunden habe, als ich damit experimentiert habe. Ich denke auch, dass der Vorschlag, die Initialisierer/Ordner zu verwenden, möglicherweise eine bessere Lösung in Bezug auf die Benutzerfreundlichkeit ist. Siehe Permanent variable in Rails

1

ich normalerweise erstellen innerhalb config/initializers/a yaml (yml) Datei mit allen globalen Standorteinstellungen. Denken Sie daran, den Server jedes Mal neu zu starten, wenn Sie etwas ändern.

7

Normalerweise gehe ich mit application_helper.rb Dies ist, wie es aussieht:

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

Dann kann ich überall als Funktion in my_global_variable setzen.