So weisen Sie ActionController :: Base.session in Schienen bedingt zu 2.3.3

Ich habe eine Rails-App mit folgendem Inhalt in der Datei config / initializers / session_store.rb:

ActionController::Base.session = {
  :key         => '_app_session',
  :secret      => 'a really long string here',
  :expire_after => 2.minutes
}

ActionController::Base.session_store = :active_record_store

Während des normalen Betriebs sehen wir ActiveRecord-Objekte, die für jede Sitzung in der Datenbank erstellt wurden. Das Problem ist, dass wir nicht immer eine Sitzung für Anforderungen erstellen möchten - wir möchten die Sitzungserstellung für automatisierte Anforderungen deaktivieren können. Wir sehen Tausende von Sitzungsaufzeichnungen in der Datenbank, eine für jede automatisierte Anforderung. Vor Schienen 2.3.3 war Folgendes möglich:

class ApplicationController < ActionController::Base
  session :off
  ...
end

aber jetzt in Rails 2.3.3 "session: off" ist veraltet, weil die Sessions jetzt faul geladen sind - wenn Sie sie nicht verwenden, werden sie nicht erstellt. Das Problem scheint zu sein, dass das Sitzungsobjekt immer in der Datei sessionstore.rb zugewiesen und daher immer erstellt wird. Wenn ich den Sitzungszuweisungsblock aus der Konfigurationsdatei entferne, werden nach einer automatisierten Anforderung keine Sitzungsaufzeichnungen angezeigt. Meine Frage ist, wie kann ich die Konfigurationszuweisungen in den Sitzungshash aus session_store.rb und in die ApplicationController-Klasse (oder anderswo) verschieben, wo die Sitzung nur bedingt zugewiesen werden kann, wenn eine Anforderung nicht automatisiert ist? Ich bin besorgt, dass die Sitzungskonfigurationsdaten möglicherweise benötigt werden, bevor der Controller-Handler ausgeführt wird. Wo würde ich die Zuweisung der Sitzungsschlüsselwerte platzieren?

Vielen Dank im Voraus für jede Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage