Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

환경 변수 한 줄로 멈춘 캐시 문제 간단히 디버깅하기

부분 캐싱(Partial Caching)은 큰 작업 없이도 페이지 로딩 속도를 크게 개선할 수 있는 훌륭한 기능입니다. 하지만 어소시에이션(association) 중 하나에 touch: true 옵션을 빠뜨리거나, 템플릿 의존성(template dependency)이 제대로 동작하지 않으면 캐시된 부분 템플릿이 갱신되지 않는 문제가 발생합니다.

더 골치 아픈 점은 개발 환경에서는 보통 캐싱이 비활성화되어 있기 때문에, 이런 버그는 스테이징에서야 발견되고 최악의 경우 운영 환경(production)에서 겨우 알아차리게 된다는 것입니다. 이 문제를 디버깅하려면 개발 모드에서도 캐싱을 켜서 상황을 재현해야 합니다.

매번 설정을 고치는 번거로움

config/environments/development.rb
config.action_controller.perform_caching             = false

위 값을 config/environments/development.rb 파일에서 true로 변경하면 됩니다. 하지만 캐시 관련 문제를 디버깅할 때마다 이 설정을 일일이 수정하고, 커밋하기 전에 반드시 원래대로 되돌려야 한다는 수고가 따릅니다. 저는 이런 반복 작업이 정말 싫습니다. 그래서 새 프로젝트를 시작할 때는 아래처럼 설정합니다.

환경 변수로 캐싱 제어하기

config/environments/development.rb
config.action_controller.perform_caching             = ENV['CACHING'] == 'true'

이렇게 해두면 캐싱이 필요할 때마다 서버를 실행할 때 환경 변수만 지정하면 됩니다.

CACHING=true rails server

반대로 그냥 rails server를 실행하면 평소처럼 캐싱 없이 동작합니다. 설정 파일을 건드리거나 되돌릴 걱정이 전혀 없습니다.

마무리

설정 값을 자주 조정하는 개발 환경이라면, 이처럼 하드코딩된 파라미터를 환경 변수로 바꾸는 패턴이 시간과 수고를 크게 줄여줍니다. 캐시 디버깅뿐 아니라 다양한 상황에 응용할 수 있으니, 여러분의 프로젝트에도 한번 적용해 보세요!