Как игнорировать папку в Zeitwerk для Rails 6? - PullRequest
0 голосов
/ 27 сентября 2019

Простой вопрос, но каким-то образом ответ ускользает от меня.

При переходе на Rails 6 с Zeitwerk я получаю:

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.

Что кажется великолепным: это мусорная папка и никогда не должнобыть загруженным, поэтому игнорирование имеет смысл.

Документы Zeitwerk по https://github.com/fxn/zeitwerk скажем

tests = "#{__dir__}/**/*_test.rb"
loader.ignore(tests)
loader.setup

- это то, как вы игнорируете папку.Справедливо.Но как мне найти loader?Руководство Rails по автозагрузке Zeitwerk (https://guides.rubyonrails.org/autoloading_and_reloading_constants.html) не упоминает, как игнорировать папки напрямую, но упоминает автозагрузчик, хранящийся на Rails.autoloaders.main, поэтому я решил, что

Rails.autoloaders.main.ignore("#{__dir__}/junkyard/**/*.rb")

или

Rails.autoloaders.main.ignore("#{__dir__}/app/junkyard/**/*.rb")

было бы способом пойти. Не повезло. Я пытался поместить это в application.rb и в initializers/zeitwerk.rb, и ни один не работал.

Любые идеи, где и как игнорироватьпапка с Zeitwerk в Rails?

PS: да, я знаю, я должен просто удалить это из app, и я сделаю. Но вопрос все еще раздражает.

...