2009-05-07 15 views
4

私はキャッシュマネーを使いたいと思いますが、自動的にすべてのキャッシュを開始したくありません(私は大量のプロダクションアプリ、テラバイトのデータなどで作業しています)。指定したモデルだけにどのように使用しますか?キャッシュマネーは1つのモデルにのみ使用できますか?

# 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

アイデアはありますか?それができないと、私はキャッシュマネーの助けを借りてどこに行くことができますか?メーリングリストなど何も見つかりませんでした。

答えて

3

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

は例えば、このバグを修正githubの上で利用できるフォークがあります http://github.com/quake/cache-money

修正は、このコミットで見ることができます。

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

+0

実際に問題が修正されました。私は必要なモデルのためにcache_moneyを選択的に有効にすることができます – Zepplock

1

アプリケーションのデプロイメントに同じ問題が発生しました。私の開発マシン上で実行しても問題ありませんでしたが、本番機ではこのエラーで失敗しました。

アーキテクチャ(OSX vs CentOS)を除いて、私が見ることのできる唯一の違いは、ルビーのバージョンが異なっていたことです(1.8.6 p114対1.8.6 p0)。サーバーを最新の1.8バージョン(1.8.7 p160)にアップグレードした後、このエラーは消えました。

+0

なんてこった!私はRubyをアップグレードする最後の日を過ごしました(多くのロードブロッキングがありました)、問題を解決しませんでした! お試しいただきありがとうございました。 – Sam

+0

cache_moneyメーリングリストを開始するべきでしょうか?あなたが走っているレールのバージョンは何ですか(私は2.3.2を使用しています)。私が試した唯一の他のものは、更新されたルビー宝石とすべての私の宝石でした。しかし、私はルビーをアップグレードする前にそれをしたと思う –

+0

私は基本的に完全にルビー、宝石、すべてのインストールを完了し、2.3.2(2.2.2を実行していた)とサイコロにアップグレードしました。来週はフルプレートを手に入れましたが、うまくいけば、私はこれを最終的に得て、答えを思いつきます。 – Sam

関連する問題