2009-05-07 4 views
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 : 정의되지 않은 메소드 'create': 모듈

아이디어가 있습니까? 그게 아니라면, 캐시 돈으로 도움을 청할 수있는 곳이 있습니까? 나는 메일 링리스트 또는 아무것도 찾을 수 없었다.

답변

1

방금 ​​응용 프로그램을 배포 할 때 동일한 문제가 발생했습니다. 내 개발 컴퓨터에서 실행하는 것은 괜찮 았지만이 오류는 프로덕션 시스템에서 실패했습니다.

아키텍처 (OSX vs CentOS) 외에도 유일한 차이점은 루비 버전이 다르다는 것입니다 (1.8.6 p114 대 1.8.6 p0). 서버를 최신 1.8 버전 (1.8.7 p160)으로 업그레이드 한 후이 오류가 사라졌습니다.

+0

아아! 방금 Ruby를 업그레이드하는 마지막 날을 보냈는데 (많은로드 블록이 있었음) 문제를 해결하지 못했습니다! 어쨌든 시도해 주셔서 upvote, 감사합니다. – Sam

+0

아마도 cache_money 메일 링리스트를 시작해야할까요? 어떤 레일 버전을 실행하고 있습니까 (2.3.2를 사용하고 있습니다). 내가 시도한 유일한 다른 것은 루비 젬과 모든 보석을 업데이트 한 것입니다. 그러나 나는 내가 루비를 업그레이드하기 전에 그랬다고 생각한다. –

+0

네, 기본적으로 루비, 보석, 모든것을 완전히 깨끗하게 설치하고 2.3.2 (2.2.2를 돌아 다녔다)와 no 주사위로 업그레이드했다. 다음 주 또는 그 정도를위한 완전한 접시를 얻었지만 잘만되면 나는 이것에 결국 도착할 것이고, 대답을 생각해 낼 것이다. – Sam

관련 문제