Rails Zeitwerk `Wrong constant name` для javascript
Использование Rails 6
У меня есть такая папка app/client/javascript/config/editor/syntax-highlighting
2 файла там.
app/client/javascript/config/editor/syntax-highlighting/math-mode.js
app/client/javascript/config/editor/syntax-highlighting/units-regex.js
Когда я развертываю производство, появляется сообщение об ошибке:
Wrong constant name Syntax-Highlighting inferred by Module from directory (Zeitwerk::NameError)
И он дает путь к этому каталогу.app/client/javascript/config/editor/syntax-highlighting
В чем причина этой ошибки?
2 ответа
Вы помещаете JavaScript в каталог, который Zeitwork загружает в продакшене. Либо переместите JS в каталог, специфичный для актива (например, app/assets для Sprockets или app/javascript для Webpacker), либо настройте Rails так, чтобы он игнорировал его:
# config/application.rb
Rails.autoloaders.main.ignore(Rails.root.join('app/path/to/dir'))
Недавно у меня возникла эта проблема с rails/webpacker при включении дефиса в имя моего каталога.
Это сработало: webpacker/images/img.jpg webpacker/images/photos/img.jpg
Это вызвало ошибку webpacker/images/compound-word/img.jpg
У меня не было времени докопаться до сути, поэтому я просто изменил его на webpacker/images/compoundword/img.jpg.