运行rails zeitwerk:check返回expected file app/api/mariana_tek_client.rb to define constant MarianaTekClient
奇怪的是,我在这个文件中定义了以下类,它似乎遵循我已经看到的惯例:project/app/api/mariana_tek_client.rb
module Api
class MarianaTekClient
include HTTParty
end
end如果我从文件中删除模块并只保留类定义,则Zeitwerk将停止失败,但这与我在其所有文档中看到的不同。另外,我要我的命名空间!
这样做是可行的:
class MarianaTekClient
include HTTParty
end如果有人能告诉我为什么命名空间失败了,我会很高兴的。
发布于 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 --其他处理代码的人也会这样做。
https://stackoverflow.com/questions/73998970
复制相似问题