nak*_*hli 5 ruby monkeypatching ruby-on-rails devise
我正在尝试在第三方 gem 中修改控制器类。准确地说,我正在尝试添加参数包装来设计控制器。在initializers/wrap_parameters.rb我添加了以下位:
Rails.application.config.after_initialize do
DeviseController.class_eval do
wrap_parameters :user, format: [:json]
end
end
Run Code Online (Sandbox Code Playgroud)
当应用程序启动时它工作得很好,但是当我修改我的一个控制器类时,参数包装立即停止工作。好像控制器类是在没有上述补丁的情况下重新加载的。
如何让我的猴子补丁持久化?
谢谢
小智 1
我之前也遇到过类似的问题,尝试对 Rails 中延迟加载的代码进行猴子修补。我能够通过将补丁包装在模块中然后在您正在编辑的类中扩展该模块来修复它。在 config/initializers 中的新文件中会是这样的:
module MyDeviseDecorator
wrap_parameters :user, format: [:json]
end
class DeviseController < Devise.parent_controller.constantize
extend MyDeviseDectorator
end
Run Code Online (Sandbox Code Playgroud)
我可能有一个设计类名称错误,它应该与您尝试进行猴子修补的任何内容相匹配。我不是 100% 这个方法会像解决我的问题一样解决您的问题,但请尝试一下;我本来想将此作为评论,但没有最低代表。
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |