0

我有以下代码:

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 服务器。

为什么会这样?我该如何解决?

4

1 回答 1

2

看起来问题在于初始化程序仅在服务器启动时加载。我您的 Cms::Page 稍后重新加载,然后添加的方法我走了。您应该考虑不将此代码放在初始化程序中,而是将其放在将用依赖类重新加载的地方。

于 2012-08-16T08:49:08.403 回答