加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 当rails重新加载类时,初始化程序中的控制器猴

发布时间:2020-12-17 02:07:18 所属栏目:百科 来源:网络整理
导读:我试图在第三方宝石中修补补丁控制器类.确切地说,我正在尝试添加参数包装来设计控制器.在initializers / wrap_parameters.rb中,我添加了以下内容: Rails.application.config.after_initialize do DeviseController.class_eval do wrap_parameters :user,for
我试图在第三方宝石中修补补丁控制器类.确切地说,我正在尝试添加参数包装来设计控制器.在initializers / wrap_parameters.rb中,我添加了以下内容:

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

它在应用程序启动时运行良好,但是当我修改其中一个控制器类时,参数包装会立即停止工作.好像在没有上述补丁的情况下重新加载控制器类.

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

谢谢

解决方法

我之前遇到过类似的问题,试图在rails中加载延迟加载的monkeypatch代码.我能够通过将补丁包装在模块中然后在您正在编辑的类中扩展模块来修复它.在config / initializers中的新文件中会出现类似的情况:

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

class DeviseController < Devise.parent_controller.constantize
    extend MyDeviseDectorator
end

我可能有一个错误的设计类名称,它应该匹配你想要monkeypatch的任何东西.我不是100%这个方法会修复你的问题,就像它固定我的,但尝试一下;我会留下这个评论,但没有最低代表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读