首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails 4使用memcached作为会话存储,使用dalli。

rails 4使用memcached作为会话存储,使用dalli。
EN

Stack Overflow用户
提问于 2013-12-12 08:38:03
回答 1查看 6.4K关注 0票数 11

我无法使用memcached作为会话存储,而rails 4则使用dalli。

这就是我所做的。

我在Gemfile中添加了dalli宝石

代码语言:javascript
复制
gem 'dalli'

我在config/initializers/session_store.rb中添加了下面一行

代码语言:javascript
复制
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes

我在development.rb中添加了下面一行

代码语言:javascript
复制
config.cache_store = :dalli_store

现在,当我使用瘦服务器启动我的开发服务器而没有启动memcached服务器时,我仍然可以像往常一样登录。我是否应该得到一些错误,比如没有运行memcached服务器之类的。

我不确定rails是否使用memcached作为会话存储。

有人能告诉我在开发环境中使用memcached作为会话存储时错过了什么吗?

请注意,我一直在使用devise作为认证宝石。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-14 07:29:07

是的,您应该在控制台中看到这样的错误:

代码语言:javascript
复制
DalliError: No server available

但是,您仍将获得会话cookie,因为Rails将生成它并将其发送到浏览器。只是Rails没有存储与cookie相关的数据的地方。

因此,在演示中,请尝试如下:

  1. 阻止memcached。在某些控制器操作中,可以这样做: def some_action提交会话:test会话:test= "hello“endYou不应该在STDOUT中看到"hello”。
  2. 现在,重新启动memcached并再次按下该操作。(可能需要刷新浏览器两次)。这一次,你应该看到“你好”。
  3. 如果再次停止memcached,将不再显示"hello“。

我希望这表明,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来存储会话数据。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20538589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档