Я думаю, что я что-то неправильно понимаю в сеансах Rails, поэтому, пожалуйста, потерпите меня, возможно, я не буду формулировать мой вопрос лучшим образом.
Я работаю над приложением для iPhone с бэкэндом Ruby on Rails. У меня есть веб-представление, которое по умолчанию переходит к действию index одного контроллера (и использует сеансы), а в фоновом режиме связка вызовов API направляется на другой контроллер (и которым не нужно использовать сеансы).
Проблема в том, что сеансы, установленные моим веб-представлением, кажутся перезаписанными вызовами API. Мой промежуточный сервер работает довольно медленно, поэтому у меня много времени, чтобы запросы перекрывали друг друга - в журналах я вижу следующее:
Request A (first controller) starts. Session is empty.
Request B (second controller) starts. Session is empty.
Request A finishes. Request A has done authentication, and stored the user ID in the session. Session contains user ID.
Request B finishes. Session is empty.
Request C starts. Session is empty - not what I want.
Теперь странно то, что запрос B НЕ должен ничего записывать в сеанс.
У меня есть фильтры до и после, которые ЧИТАЮТ с сессии - такие вещи, как:
user = User.find_by_id(session[:id])
или
logger.debug session.inspect
и если я удаляю все из них, то все работает как положено - содержимое сеанса устанавливается по запросу A, и они все еще там, когда начинается запрос C.
Итак. Я думаю, что мне чего-то не хватает в работе сессий. Почему чтение с сессии перезаписывает это? Должен ли я получить к нему доступ другим способом? Я совершенно не на том пути, и проблема в другом месте?
Спасибо за любые идеи!