ruby 如何配置Zeitwerk来处理首字母缩略词的变化?

ef1yzkbh  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(107)

我的Rails应用程序使用了一个定义了首字母缩略词变化的引擎:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym "UI"
end

字符串
这意味着(例如)Rails将从helpers/ui_helper.rb而不是UiHelper加载UIHelper
现在我想使用一个gem("motor-admin"),但是我得到了这个错误:

uninitialized constant Motor::UIController


这是因为gem的类名是Motor::UiController,但其词形变化是寻找Motor::UIController(注意UiUI)。
我试着按照Rails指南中的自定义屈折来做,但似乎无法消除这个错误。
如何配置Rails以正确加载带有"UI"首字母缩略词变形的Motor::UiController

lxkprmvk

lxkprmvk1#

你可以尝试以下方法:

Rails.autoloaders.each do |autoloader|
  autoloader.inflector.inflect(
    'ui_controller' => 'UIController'
  )
end

字符串
编辑添加:你可能也要为模型做这个。如果你运行bin/rails zeitwerk:check,它会告诉你哪些文件还需要修改。
我还没有尝试改变一个包含的宝石控制器的名称,但我做了一个升级,从5.2到7.0,并不得不这样做,为我自己的控制器的名称是在相同的形式,汽车似乎正在采取。

相关问题