Я работаю над гемом, который нужно будет читать и писать не только в текущем сеансе, но и в других «связанных» сеансах. Прямо сейчас я жестко кодирую операции чтения и записи в основное хранилище сеансов, которое мы используем в наших рельсах и стойках, всякий раз, когда мне нужно обновить сеанс, отличный от текущего. Но, чтобы сделать решение переносимым на другие реализации сеансов, потребуется более общий подход.
В приложениях Rails я могу посмотреть на Rails.application.config.session_store
, чтобы определить реализацию хранилища сеансов и создать новый экземпляр для чтения и записи в сеансах после текущего сеанса. Создание другого экземпляра хранилища сеансов кажется немного неэффективным, но, похоже, оно работает.
Однако я не могу найти способ запросить текущее хранилище сеансов через приложение Rack. env['rack.session']
и env['rack.session.options']
не дают никакой информации.
Лучшим решением было бы получить доступ к уже созданному приложению Rack :: Session Rack в стеке промежуточного программного обеспечения. Я не уверен, как запросить, какое промежуточное программное обеспечение работает, а какое является текущей реализацией Rack :: Session (просто проверьте, какая из них является потомком Rack::Session::Abstract::ID
?).
Будем весьма благодарны за любые советы по обращению с промежуточным программным обеспечением или альтернативные предложения.