Хорошо, после 2 дней возни я наконец нашел ответ.
Одновременно появилась другая ошибка, но сначала я не установил соединение.Ошибка состояла в том, что когда пользователь хотел выйти из системы, Devise попытался удалить файл cookie сеанса и использовал конфигурацию для моего хранилища сеансов, чтобы выяснить, где мое приложение хранит файлы cookie сеансов.Теперь я использую «конфигурацию приложения», такую как this и redis-store для моих сессий.Моя конфигурация хранилища сессий выглядела так
MyApp::Application.config.session_store :redis_session_store, AppConfig.redis
AppConfig.redis выглядит примерно так:
{ :port => 123, :namespace => 'foo' }
Проблема в том, что AppConfig.redis
это ActiveSupport::HashWithIndifferentAccess
, а не Hash
,В какой-то момент кто-то пытается вызвать symbolize_keys!
для него, и это не удается, потому что ActiveSupport::HashWithIndifferentAccess
не имеет этого метода.
Короче говоря: я изменил AppConfig.redis
на AppConfig.redis.to_hash
, и все снова заработало,Проблема, которая помешала мне войти, по-видимому, заключалась в том, что сессионный cookie для моего пользователя все еще существовал.(Или у кого-нибудь есть лучшее объяснение?).Все еще странно, что Devise не выдает правильное исключение или просто перезаписывает cookie-файл сессий.