2012-08-16 109 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被重新加载后,然后添加的方法我走了。你应该考虑把这个代码放在初始化器中,但是在那里它会被依赖类重新加载。