Zeitwerk的自述文件给出了这个名称空间折叠的示例:
booking.rb ->预订
预订/操作/create.rb ->预订::Create
要使它以这种方式工作,请将Zeitwerk配置为折叠指定目录:
loader.collapse("#{__dir__}/booking/actions")
但是我不想把中间部分剪掉,我想把所有的东西都放在根级的名称空间中。
也就是说,我想要的不是Booking::Actions::Create或Booking::Create,而是Create。我该怎么做?
发布于 2022-08-30 23:51:54
collapse只是移除给定路径中的最后一个目录,所以如果要删除两个目录,请为每个目录运行collapse。
例如。
如果您有/app/a/b/c/d.rb,那么您可以将d.rb提升到没有名称空间的位置:
loader.collapse("app/a/b/c")
loader.collapse("app/a/b")Zeitwerk将把d.rb看作是在app/a/中,并且app/的所有子文件夹都被认为是根级的
发布于 2022-08-29 08:01:28
最简单的方法是将/path/to/booking/actions定义为根目录。这在你的申请中有意义吗?
https://stackoverflow.com/questions/73522812
复制相似问题