2012-08-16 4 views
0

나는 다음과 같은 코드가 있습니다NoMethodError의 원인은 무엇입니까?

Cms::Page.class_eval do 
    def self.fetch_by_slug(slug) 
    Rails.cache.fetch("cms_page_#{slug}") { Cms::Page.find_by_slug(slug) } 
    end 
end 

것은이

config/initializers/cms_mp.rb의를 내 레이아웃 파일에 fetch_by_slug로 전화를 가지고, 따라서, 그것은 각 요청에 대해라고. 개발 모드에서 클래스를 다시로드하는 작업을 수행하면 오류 메시지 가 표시되며 유일한 해결 방법은 레일스 devel 서버를 다시 시작하는 것입니다.

왜 이런 일이 발생합니까? 어떻게 해결할 수 있습니까?

답변

2

문제는 이니셜 라이저가 서버 부팅시에만로드된다는 것입니다. 나는 당신의 Cms : 페이지가 다시로드 된 후 내가 추가 한 방법입니다. 이 코드를 이니셜 라이저에 넣지 말고 종속 클래스로 다시로드 할 위치를 지정해야합니다.

관련 문제