2010-06-23 3 views
5

Ich bin ein neuer Ruby on Rails Benutzer und hatte eine Frage. Ich habe eine Vorstellung davon, wie meine Benutzer-DB aussehen soll, aber ich fragte mich, ob ich einen zusätzlichen Wert hinzufügen sollte oder nicht. Im Grunde brauche ich eine Variable, um allen Benutzern zu signalisieren, dass es sicher ist, mit einer bestimmten Aktion fortzufahren. Diese Variable wäre für alle Benutzer persistent und sollte für alle Benutzer sichtbar sein, aber ich möchte, dass der Server diese Variable ebenfalls ändern kann. Bei der Programmierung in anderen Sprachen würde ich globale Variablen verwenden, also wollte ich prüfen, ob das auch hier der Fall ist. Wenn ja, wäre dies der beste Ansatz dafür: Site-Wide Global Variables in Ruby on Rails. Wie würde ich die globalen Variablen aktualisieren? Danke für jede Hilfe!Ruby on Rails - globale Variable?

Antwort

7

Eine globale Variable passt nicht zu Ihrem Bedarf. Es verteilt sich nicht auf alle Ruby-Prozesse. Wenn Ihr Web-Server 5 Ruby-Prozesse zur Bearbeitung von 5 Requests zur gleichen Zeit erzeugt, ist die im ersten Prozess definierte Variable für die anderen nicht sichtbar.

Es sind andere Lösungen verfügbar. Sie können eine Datenbank verwenden und das Flag/die Informationen in der Datenbank speichern. Andernfalls können Sie eine Datei verwenden und den Wert in der Datei speichern. Die beste Lösung wäre eine gemeinsam genutzte Datenquelle im Speicher wie Memcached oder Redis.

+1

Memcache wäre Overkill, wenn dies die einzige gespeicherte Variable ist –