Использовать кеш-деньги только для одной модели? - PullRequest
4 голосов
/ 08 мая 2009

Я хочу использовать кеш-деньги, но я не хочу запускать автоматическое кэширование всего (я работаю с большим производственным приложением, терабайтами данных и т. Д.). Как использовать его только для указанных моделей? Прямо сейчас у меня есть:

# 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 'для Config: Module

Есть идеи? В противном случае я могу обратиться за помощью к кеш-деньгам? Я не смог найти список рассылки или что-то еще.

Ответы [ 2 ]

3 голосов
/ 18 октября 2009

Я думаю, что это ошибка в коде cache_money.

На github доступны вилки, исправляющие эту ошибку, например: http://github.com/quake/cache-money

Исправление можно увидеть с помощью этого коммита:

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

1 голос
/ 20 мая 2009

Я только что столкнулся с той же проблемой при попытке развернуть приложение. Работать на моей машине для разработки было нормально, но с этой ошибкой на производственной машине это не получилось.

Помимо архитектуры (OSX и CentOS), единственное отличие, которое я видел, было то, что версии ruby ​​были другими (1.8.6 p114 против 1.8.6 p0). После обновления сервера до последней версии 1.8 (1.8.7 p160) эта ошибка исчезла.

...