首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Zeitwerk不尊重模块中的类

Rails Zeitwerk不尊重模块中的类
EN

Stack Overflow用户
提问于 2022-10-08 17:08:35
回答 1查看 49关注 0票数 0

运行rails zeitwerk:check返回expected file app/api/mariana_tek_client.rb to define constant MarianaTekClient

奇怪的是,我在这个文件中定义了以下类,它似乎遵循我已经看到的惯例:project/app/api/mariana_tek_client.rb

代码语言:javascript
复制
module Api
  class MarianaTekClient
    include HTTParty
  end
end

如果我从文件中删除模块并只保留类定义,则Zeitwerk将停止失败,但这与我在其所有文档中看到的不同。另外,我要我的命名空间!

这样做是可行的:

代码语言:javascript
复制
class MarianaTekClient
  include HTTParty
end

如果有人能告诉我为什么命名空间失败了,我会很高兴的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-08 17:38:59

我猜您已经添加了app/api作为一个额外的自动路径。如果是这样的话,Zeitwerk将在该文件夹中查找根命名空间中的类,以及模块中的类的子文件夹-因此它希望app/api/mariana_tek_client.rb包含MarianaTekClient;如果您想要Api::MarianaTekClient,则需要进入app/api/api/mariana_tek_client.rb

您可以将Zeitwerk指向app,然后它将在app/api/mariana_tek_client.rb中查找Api::MarianaTekClient;但是从长远来看,这是不受欢迎的可能会给您带来更多的问题。

我建议使用默认的Zeitwerk配置,并将模型类置于app/models下;因此,它将在app/models/api/mariana_tek_client.rb中查找Api::MarianaTekClient --其他处理代码的人也会这样做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73998970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档