Rails Zeitwerk 蛇壳

Rails Zeitwerk snakecase

当我们在 app/ 下有一个目录时,我们希望 Zeitwerk 从中运行,并说命名恰好类似于

app/stuff/graphql.rb
app/stuff/graphql_error.rb

然后 Zeitwerk 正在寻找一些具有某些模块或 class Graphql 的模块 Stuff。但在我的代码中,我总是将我的模块和 classes 编写为 GraphQL 以符合该约定。所以 Zeitwerk 现在在尝试使用代码时抛出 Zeitwerk::NameError。我不想用Stuff::GraphqlError,我想用Stuff::GraphQLError。我如何在这里欺骗 Zeitwerk?

我相信 Zeitwerk 有可用于此的变形器: https://github.com/fxn/zeitwerk#inflection

为了让 app/stuff 充当命名空间,您必须将 app 本身作为自动加载路径。这有点棘手,请看一下https://guides.rubyonrails.org/classic_to_zeitwerk_howto.html#having-app-in-the-autoload-paths