首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails6中忽略Zeitwerk中的文件夹?

如何在Rails6中忽略Zeitwerk中的文件夹?
EN

Stack Overflow用户
提问于 2019-09-27 07:21:38
回答 1查看 4.3K关注 0票数 13

这是一个简单的问题,但不知何故,我想不到答案。

在使用Zeitwerk迁移到Rails 6的过程中,我得到了:

代码语言:javascript
复制
Please, check the "Autoloading and Reloading Constants" guide for solutions.
 (called from <top (required)> at APP_ROOT/config/environment.rb:7)
rails aborted!
Zeitwerk::NameError: wrong constant name Enforce-calls-to-come-from-aws inferred by Module from directory

  APP_ROOT/app/junkyard/enforce-calls-to-come-from-aws

Possible ways to address this:

  * Tell Zeitwerk to ignore this particular directory.
  * Tell Zeitwerk to ignore one of its parent directories.
  * Rename the directory to comply with the naming conventions.

这看起来很棒:这是一个垃圾文件夹,永远不应该加载,所以忽略它是很有意义的。

https://github.com/fxn/zeitwerk的Zeitwerk文档说

代码语言:javascript
复制
tests = "#{__dir__}/**/*_test.rb"
loader.ignore(tests)
loader.setup

忽略文件夹的方式。当然可以。但是我如何找到loader呢?Zeitwerk autoloading (https://guides.rubyonrails.org/autoloading_and_reloading_constants.html)上的Rails指南没有提到如何直接忽略文件夹,但提到了隐藏在Rails.autoloaders.main中的自动加载器,所以我认为

代码语言:javascript
复制
Rails.autoloaders.main.ignore("#{__dir__}/junkyard/**/*.rb")

代码语言:javascript
复制
Rails.autoloaders.main.ignore("#{__dir__}/app/junkyard/**/*.rb")

才是最好的选择。不走运。我试着把它放在application.rbinitializers/zeitwerk.rb中,都不管用。

有什么想法在Rails中忽略带有Zeitwerk的文件夹吗?

PS:是的,我知道我应该从app中删除它,我会这样做的。但这个问题仍然令人头疼。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-01 21:24:53

我遇到了同样的问题,结果发现它是在抱怨文件夹名称。

将此代码添加到application.rb可能会对您起作用:

Rails.autoloaders.main.ignore(Rails.root.join('app/junkyard'))

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

https://stackoverflow.com/questions/58125879

复制
相关文章

相似问题

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