gpt4 book ai didi

ruby-on-rails - 如何从初始化器扩展一个类并在开发环境中重新加载它?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:20 24 4
gpt4 key购买 nike

我通过包含一个模块来扩展一个类(在插件中),这是在初始化程序中完成的。

require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User

但是在开发过程中,在每次请求之前(以及在控制台中调用 reload! 之后)所有模型都会重新加载,但由于初始化器不会再次运行,所以模块不包含在内。留下带有“缺失部分”的模型。

因为模型在插件中,所以将代码直接包含在类中似乎不是明智的做法,这将是通常的方法。

现在我只是简单地添加了一个 before_filter,它包含了开发环境中的模块。但是我有复制/粘贴并且在初始化程序和应用程序 Controller 中有重复代码

  # Class extensions in initalizers are over-writtern each request
def development_loading
if RAILS_ENV == 'development'
User.send :include, Qwerty::Core::Extensions::User
end
end

有没有更好的办法?

作为旁注,插件是我的,所以我可以向其中添加代码,但模块中的扩展可能并不总是存在......

最佳答案

环境.rb

config.to_prepare do
User.send :include, Qwerty::Core::Extensions::User
end

代码是 block 在开发模式下的每个请求之前运行,在生产模式下运行一次。

关于ruby-on-rails - 如何从初始化器扩展一个类并在开发环境中重新加载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com