【发布时间】:2021-05-22 20:21:18
【问题描述】:
Rails 的默认会话存储是cookie_store。这使得会话存储在客户端(如果我错了,请纠正我)。
我想更改此默认行为,以便可以将会话存储到 Redis 数据库中。
我在互联网上找到的帖子/文章建议设置一个缓存存储以使用redis_cache_store,然后为 session_store 设置使用cache_store。
据我所知,这意味着缓存和会话都将使用同一个数据库(实例)。我不想要那个。我希望会话和缓存都使用不同的 Redis 实例,因此可以进行相应的配置。
我尝试创建一个初始化文件config/initializers/session_store.rb,其内容如下:
Rails.application.config.session_store :redis_cache_store, key: '_my_app_session'
但这不起作用。它给了我以下错误:
/application/configuration.rb:324:in `const_get': 未初始化的常量 ActionDispatch::Session::RedisCacheStore (NameError)
我还发现了这个 gem https://github.com/redis-store/redis-store,但我不确定使用这个 gem 会有多大问题,因为 Rails 已经有一个内置的 Redis 缓存存储 (https://github.com/rails/rails/pull/31134)
【问题讨论】:
标签: ruby-on-rails session redis