仅对单个模型使用缓存资金?

时间:2009-05-07 20:58:15

标签: ruby-on-rails ruby memcached cache-money

我想使用缓存资金,但我不想开始自动缓存所有内容(我正在使用大型生产应用程序,太字节数据等)。如何仅将其用于我指定的模型?现在我有:

# initializers/cache_money.rb
require 'cache_money'

config = (cfg = YAML.load(IO.read(File.join(RAILS_ROOT, "config", "memcached.yml"))))[RAILS_ENV] || cfg["defaults"]
$memcache = MemCache.new(config)
$memcache.servers = config['servers']

$local = Cash::Local.new($memcache)
$lock = Cash::Lock.new($memcache)
$cache = Cash::Transactional.new($local, $lock)

然后在模型中我想用缓存钱缓存:

# my_model.rb
class MyModel < ActiveRecord::Base
  is_cached :repository => $cache
  # ...
end

但这不起作用;对is_cached的调用给出以下错误:NoMethodError:未定义的方法`create'for Config:Module

有什么想法吗?如果不这样做,我可以在任何地方寻求缓存资金的帮助吗?我找不到邮件列表或任何东西。

2 个答案:

答案 0 :(得分:3)

我认为这是cache_money代码中的一个错误。

github上有可用于修复此错误的分叉,例如: http://github.com/quake/cache-money

使用此提交可以看到修复:

http://github.com/quake/cache-money/commit/54c3d12789f31f2904d1fe85c102d7dbe5829590

答案 1 :(得分:1)

我刚刚遇到了尝试部署应用程序的同样问题。在我的开发机器上运行它很好,但它在生产机器上出现此错误失败了。

除了架构(OSX vs CentOS)之外,我唯一看到的区别是ruby版本不同(1.8.6 p114 vs 1.8.6 p0)。将服务器升级到最新的1.8版本(1.8.7 p160)后,此错误消失了。

相关问题