0
하나의 컨트롤러에서 이와 같이 레일 메모리 캐시를 사용합니다.레일 3 캐시 리턴 없음
def form_config_cache
Rails.cache.fetch("form_config", :expires_in => 12.hours) do
puts 'Building cache...'
form_config = s3_read_object('form_config.js')
return JSON.parse(form_config)
end
end
정의 된 컨트롤러에서 정상적으로 작동합니다. 그러나 다른 컨트롤러에서 값을 읽으려고하면 그 값이 nil로 반환됩니다. 아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까? 여기에 다른 컨트롤러에서 읽으려고하는 방법이 나와 있습니다. return
반환 전체 방법을 형성하므로 캐시에 값을 저장 fetch
의 비트는 결코 실행하지 않고 반환 read
로 호출 아무것도 :
form_config = Rails.cache.read('form_config')
확인 :
당신은 모든
next
또는 아무것도 사용하지 수 중 하나. 설명해 주셔서 감사드립니다. 하지만 또 다른 설명이 필요합니다. 캐시 블록 내부에서 로그 문을 사용하고 있었는데, 한 번만 나타났습니다. 캐시 블록이 저장 될 때마다 실행되지 않는 이유는 무엇입니까? 나는 그 문장을 어디에서 로깅했는지 보여주기 위해 코드 블록을 업데이트했다. – 3coins