Mam app szyn, który ma następującą zawartość w config/inicjalizatory/plik session_store.rb:Jak warunkowo przypisać ActionController :: Base.session w szynach 2.3.3
ActionController::Base.session = {
:key => '_app_session',
:secret => 'a really long string here',
:expire_after => 2.minutes
}
ActionController::Base.session_store = :active_record_store
Więc podczas normalnej pracy widzimy obiekty ActiveRecord utworzone w bazie danych dla każdej sesji. Problem polega na tym, że nie zawsze chcemy tworzyć sesje dla żądań - chcielibyśmy móc wyłączyć tworzenie sesji dla automatycznych żądań. W bazie danych znajduje się tysiące rekordów sesji, po jednym dla każdego automatycznego żądania. Przed szyn 2.3.3 dodaje się udało:
class ApplicationController < ActionController::Base
session :off
...
end
ale teraz w szynach 2.3.3 „session: off” została zaniechana, ponieważ sesje są teraz leniwi załadowany - jeśli nie z nich korzystać, nie są tworzone. Problem wydaje się, że obiekt sesji jest zawsze przypisywany w pliku sessionstore.rb, a zatem zawsze tworzony. Jeśli usuniemy blok przypisania sesji z pliku konfiguracyjnego, wtedy żadne rekordy sesji nie pojawią się po automatycznym żądaniu. Moje pytanie brzmi: jak przenieść przypisania konfiguracji do skrótu sesji z session_store.rb i do klasy ApplicationController (lub gdzie indziej), gdzie sesja może być warunkowo przypisana tylko wtedy, gdy żądanie nie jest zautomatyzowane? Obawiam się, że dane konfiguracyjne sesji mogą być potrzebne przed uruchomieniem procedury obsługi kontrolera. Gdzie powinienem umieścić przypisanie wartości klucza sesji?
Z góry dziękuję za pomoc.
z odsetkami, czy istnieje powód, dla którego nie używasz domyślnego cookies w oparciu realizacja sesji? – jonnii