2012-08-16 162 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來電我的佈局文件,因此,它被稱爲爲每個請求。在開發模式下,如果我執行某些操作來觸發類的重新加載,我會收到錯誤消息undefined method fetch_by_slug for #<Class:0xbff20e8>,唯一的解決方法是重新啓動rails devel服務器。

這是怎麼發生的?我該如何解決它?

回答

2

它看起來像問題是初始化程序僅在服務器啓動時加載。我的Cms :: Page被重新加載後,然後添加的方法我走了。你應該考慮把這個代碼放在初始化器中,但是在那裏它會被依賴類重新加載。

相關問題