4

キャッシュマネーを使用したいのですが、すべてを自動的にキャッシュすることはしたくありません (大規模な実稼働アプリ、テラバイト単位のデータなどを扱っています)。指定したモデルのみに使用するにはどうすればよいですか? 今私は持っています:

# 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: undefined method `create' for Config:Module

何か案は?それができない場合、キャッシュマネーについて助けを求めることができる場所はありますか? メーリングリストも何も見つかりませんでした。

4

2 に答える 2

3

これは cache_money コードのバグだと思います。

このバグを修正する github で利用可能なフォークがあります。例: http://github.com/quake/cache-money

この修正は、次のコミットで確認できます。

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

于 2009-10-18T18:29:36.783 に答える
1

アプリケーションをデプロイしようとしたときに同じ問題が発生しました。開発マシンでの実行は問題ありませんでしたが、本番マシンではこのエラーで失敗しました。

アーキテクチャ (OSX と CentOS) を別にすれば、Ruby のバージョンが異なる (1.8.6 p114 と 1.8.6 p0) だけでした。サーバーを最新の 1.8 バージョン (1.8.7 p160) にアップグレードすると、このエラーはなくなりました。

于 2009-05-20T11:21:28.960 に答える