我无法使用memcached作为会话存储,而rails 4则使用dalli。
这就是我所做的。
我在Gemfile中添加了dalli宝石
gem 'dalli'我在config/initializers/session_store.rb中添加了下面一行
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes我在development.rb中添加了下面一行
config.cache_store = :dalli_store现在,当我使用瘦服务器启动我的开发服务器而没有启动memcached服务器时,我仍然可以像往常一样登录。我是否应该得到一些错误,比如没有运行memcached服务器之类的。
我不确定rails是否使用memcached作为会话存储。
有人能告诉我在开发环境中使用memcached作为会话存储时错过了什么吗?
请注意,我一直在使用devise作为认证宝石。
谢谢
发布于 2013-12-14 07:29:07
是的,您应该在控制台中看到这样的错误:
DalliError: No server available但是,您仍将获得会话cookie,因为Rails将生成它并将其发送到浏览器。只是Rails没有存储与cookie相关的数据的地方。
因此,在演示中,请尝试如下:
我希望这表明,cookie的生成(包含会话密钥)和根据cookie的值存储数据(即会话键)是两件不同的事情。当然,确保memcached真的停止了。
至于即使memcached已停止也可以登录的部分,请检查是否清除了域(localhost)的所有cookie,并且在进行更改后重新启动了rails服务器。另外,清除tmp/cache目录。
PS。如果您没有看到错误DalliError: No server available,那么这意味着memcached可能仍然在某个地方运行。尝试通过Rails控制台访问memcached,看看您是否能够存储/获取数据。
PPS。如果您看到文件存储在tmp中(比如tmp/cache/D83/760/_session_id%3A4d65e5827354d0e1e8153a4664b3caa1),),那么这意味着Rails将返回到FileStore来存储会话数据。
https://stackoverflow.com/questions/20538589
复制相似问题