Rails raitlie 的 config.to_prepare 不是每次 request 都调用,与文档描述的不一样

zhelee · 2012年08月26日 · 最后由 xds2000 回复于 2012年09月08日 · 2912 次阅读

我在用 railtie 写一个小插件,在这个插件里我希望能给应用里的一个 user model 添加一些属性,在我的插件里有一个文件负责这个工作:

User.class_eval do
    attr_accessible :group
end

然后是 railtie

module MyGem
    class Railtie < Rails::Railtie
        config.to_prepare do
            require "ext/user"
            puts "require the patch"
        end
    end
end

然后在应用 Gemfile 里我加上这个 gem

gem 'mygem', :path => '../mygem'

打开 rails server 的时候会看到 require the patch,但是只有这一次,官方文档里写的是在开发模式下config.to_prepare,会每次 request 都调用的,可是我这里不是。我是在开发模式下,config.cache_classes = false。大家给看看有什么问题吗?

#1 楼 @xds2000 谢谢,可是还是只是在服务器启动的时候才加载一次,我用engine,和railtie都试过了,都不行,我在 stackoverflow 上也都看到好多和这个问题相关的,但是好像能解决问题的很少

匿名 #4 2012年08月27日

难道你需要的是这个? unloadable

#4 楼 @help5305fff 其实这个问题就是如果在更改了 gem 里的文件,在应用里能够重新加载。现在它只加载一次。你说的 unloadable 能详细解释一下吗,

需要 登录 后方可回复, 如果你还没有账号请 注册新账号