Cache-Money: использовать только в производстве? - PullRequest
1 голос
/ 17 января 2009

Я использую гем cache-money для прозрачного использования Memcached. Используя предоставленный файл конфигурации, он включен во всех режимах (разработка, тестирование, производство). Есть ли способ активировать кеш-деньги только в производственном режиме?

Не совсем понятно, как это сделать, и это общая проблема, связанная с кэшированием в режиме разработки.

Ответы [ 3 ]

5 голосов
/ 05 февраля 2009

Спасибо Оби Фернандесу за отличный оффлайн-совет: заглушите метод #index кеш-денег, чтобы ничего не делать. Это обеспечивает место для операторов #index в моделях и останавливает ошибку, упомянутую выше.

Вот моя полная библиотека cache_money.rb:

if RAILS_ENV != 'development'
  require 'cache_money'

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

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

  class ActiveRecord::Base
    is_cached :repository => $cache
  end
else
  # If we're in development mode, we don't want to
  # deal with cacheing oddities, so let's overrite
  # cache-money's #index method to do nothing...
  class ActiveRecord::Base
    def self.index(*args)
    end
  end
end
1 голос
/ 17 мая 2009

Выключив кеш-деньги в тесте, вы не сможете узнать, мешает ли он вашему коду.

Я сделал это вместо:

require 'cache_money'
require 'memcache'

if RAILS_ENV == 'test'
  $memcache = Cash::Mock.new
else
  config = YAML.load(IO.read(File.join(RAILS_ROOT, "config", "memcached.yml")))[RAILS_ENV]
  $memcache = MemCache.new(config)
  $memcache.servers = config['servers']
end

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

class ActiveRecord::Base
  is_cached :repository => $cache
end
0 голосов
/ 04 февраля 2009

В вашем инициализаторе пропустите инициализацию, если вы работаете в режиме разработки:

unless 'development' == RAILS_ENV
  require 'cache_money'
  ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...