gpt4 book ai didi

ruby-on-rails - 当 Rails 重新加载类时,初始化程序中的 Controller 猴子补丁丢失

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:45 25 4
gpt4 key购买 nike

我正在尝试在第三方 gem 中修改 Controller 类。准确地说,我正在尝试添加参数包装来设计 Controller 。在 initializers/wrap_parameters.rb 中,我添加了以下内容:

Rails.application.config.after_initialize do
DeviseController.class_eval do
wrap_parameters :user, format: [:json]
end
end

它在应用程序启动时工作得很好,但是当我修改我的 Controller 类之一时,参数包装立即停止工作。好像 Controller 类在没有上述补丁的情况下重新加载。

如何使我的猴子补丁持久化?

谢谢

最佳答案

我之前遇到过类似的问题,试图对 rails 中延迟加载的代码进行 monkeypatch。我能够通过将我的补丁包装在一个模块中然后在您正在编辑的类中扩展该模块来修复它。在 config/initializers 的新文件中会是这样的:

module MyDeviseDecorator
wrap_parameters :user, format: [:json]
end

class DeviseController < Devise.parent_controller.constantize
extend MyDeviseDectorator
end

我的设计类名可能有误,它应该与您尝试进行 monkeypatch 的任何内容相匹配。我不是 100% 这种方法会像解决我的问题一样解决你的问题,但试一试;我会把它留作评论,但没有最低限度的代表。

关于ruby-on-rails - 当 Rails 重新加载类时,初始化程序中的 Controller 猴子补丁丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26585129/

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