我有以下代码:
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服务器。
为什么会这样?我该如何解决?
答案 0 :(得分:2)
看起来问题是初始化程序仅在服务器启动时加载。我你的Cms :: Page重新加载,然后添加的方法我去了。您应该考虑将此代码放在初始化程序中,而不是将其重新加载到依赖类中。