应用程序中的Monkeypatch基于宝石的模型,确保在开发中重新加载,而不会减慢应用程序的爬行速度?

时间:2012-01-05 20:24:59

标签: ruby-on-rails activerecord

我在gem中定义了一大堆模型,我将其捆绑到一个Rails项目中。我希望能够使用app / models中的文件中的代码对这些模型类进行monkeypatch,并像往常一样在每个请求上重新加载app / models / *。

我实际上解决了上述问题。我现在的问题是该解决方案使我的应用程序缓慢 - 屏幕在开发模式下加载30-40秒与之前的一两秒。这是我现在在初始化程序中得到的内容:

model_init = lambda{
  path = File.expand_path(File.dirname(__FILE__) + "../../../app/models")

  Dir.glob("#{path}/*.rb").each do |path|
    require path
  end
}

ActionDispatch::Callbacks.to_prepare(&model_init)

任何人都可以提供有关我如何加快速度的信息吗?我在Rails 3.1.3上,但是如果3.2.0-rc1中的active_reload可以解决这个问题,我很乐意升级。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Rails 3.1中存在一个已知错误 - 每个资产都会根据请求重新编译。因此,如果您的应用有很多资产,那么您在开发模式下的响应会很慢。这已在3.2中修复。