You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Zeitwerk命名空间全部折叠至根层级?

解决方案

要让booking/actions/create.rb直接映射到根命名空间的Create类,你需要通过Zeitwerk的push_dir方法,明确指定该目录对应的命名空间为根命名空间(即Object),而非继承父目录的嵌套命名空间。

具体配置代码如下:

loader = Zeitwerk::Loader.new
# 将booking/actions目录绑定到根命名空间
loader.push_dir("#{__dir__}/booking/actions", namespace: Object)
# 若需加载根目录下的其他文件(比如booking.rb),继续添加该目录
loader.push_dir(__dir__)
loader.setup

补充说明

  • namespace: Object参数的作用是告诉Zeitwerk:该目录下所有文件对应的类/模块,直接归属根命名空间,无需嵌套在Booking::Actions或Booking之下。
  • 上述配置会保留对根目录的加载逻辑,因此booking.rb仍会正常映射为Booking类,两者互不干扰。
  • 需注意:要确保根命名空间下没有其他同名的Create类/模块,否则会触发命名冲突。

内容的提问来源于stack exchange,提问作者Mirror318

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:24:46