【问题标题】:Memcached problem with Rails 3. Object isn't being deserialized the second time aroundRails 3 的 Memcached 问题。对象没有被第二次反序列化
【发布时间】:2011-05-11 06:46:43
【问题描述】:

我在 Rails 3 中使用 memcached 时遇到问题

以下在我的控制器中

@last_post = Rails.cache.fetch('last') {Post.last}

从我称之为@last_post.title的观点来看

第一次加载视图时,显示最后一篇文章的标题。刷新视图后,我收到错误 undefined method 'title' for #<String:0x8007ae0>

该对象似乎没有被第二次反序列化。

我做错了吗?我能做些什么来解决这个问题? (Ruby 1.8.7,Rails 3.0.1)

谢谢!

【问题讨论】:

    标签: ruby-on-rails caching ruby-on-rails-3 memcached


    【解决方案1】:

    我认为它与 Marshal.load 有关,基本上 rails 会神奇地为您加载所有类,但是当您调用 Rails.cache.fetch 时,它会调用 Marshal.load,而 Marshal.load 对 Rails 依赖项一无所知加载,有时会默默地失败(未定义的类/模块)

    我的解决方案是简单地添加

    require_dependency 'post'
    

    到你的控制器,它应该加载类供 Marshal 库查看

    【讨论】:

      【解决方案2】:

      我找到了解决方案!确保您在development.rb 中设置了您的商店,无论您是否启用了缓存。也可以将此添加到development.rb

      config.cache_store = :dalli_store

      【讨论】:

        猜你喜欢
        • 2016-02-08
        • 1970-01-01
        • 2011-05-06
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        相关资源
        最近更新 更多