Memcache   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 在Rails中将memcached作为Object存储大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的Rails应用程序中使用Memcached作为Object Store,我在其中存储了memcached中User对象的搜索结果

现在,当我获取数据时,我得到了Memcached Undefined Class / Module Error.我在这个博客中找到了解决这个问题的方法

http://www.philsergi.com/2007/06/rails-memcached-undefinded-classmodule.html

before_filter :preload_models
  def preload_models
    Model1
    Model2
  end

建议事先预装模型.我想知道是否有一个更优雅的解决方案来解决这个问题,并且使用预加载技术有任何缺点.

提前致谢

解决方法

我也有这个问题,我想我想出了一个很好的解决方案.

您可以覆盖fetch方法并挽救错误并加载正确的常量.

@H_87_6@module ActiveSupport module Cache class MemCacheStore # Fetching the entry from memcached # For some reason sometimes the classes are undefined # First rescue: trying to constantize the class and try again. # Second rescue,reload all the models # Else raise the exception def fetch(key,options = {}) retries = 2 begin super rescue ArgumentError,NameError => exc if retries == 2 if exc.message.match /undefined class\/module (.+)$/ $1.constantize end retries -= 1 retry elsif retries == 1 retries -= 1 preload_models retry else raise exc end end end private # There are errors sometimes like: undefined class module ClassName. # With this method we re-load every model def preload_models #we need to reference the classes here so if coming from cache Marshal.load will find them ActiveRecord::Base.connection.tables.each do |model| begin "#{model.classify}".constantize rescue Exception end end end end end end

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 在Rails中将memcached作为Object存储全部内容,希望文章能够帮你解决ruby-on-rails – 在Rails中将memcached作为Object存储所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: