ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ: актив «ckeditor.js» отсутствует в конвейере ресурсов. Обратный вызов к активу, который может находиться в общей папке - PullRequest
0 голосов
/ 18 декабря 2018

Я недавно обновился до Rails 5.2.2 (с 4.2.3), и теперь я получаю это предупреждение в журналах на страницах с использованием гема CKEditor.

ПРЕДУПРЕЖДЕНИЕ ОБ УСТРОЙСТВЕ: Актив "ckeditor.js" отсутствует в конвейере актива. Возвращается к активу, который может находиться в общей папке.Это поведение устарело и будет удалено.Чтобы обойти конвейер активов и сохранить это поведение, используйте параметр skip_pipeline: true.

Это строка:

<%= javascript_include_tag :ckeditor %>

Я попытался добавить skip_pipeline: true, но затем он началделать запросы для "/javascripts/ckeditor.js", который выдал ошибку 404.

В любом случае, CKEditor работает, и текстовое поле представляет собой форматированный текст.У меня есть эта строка в моем application.js

 //= require ckeditor/init

Она работает даже без javascript_include_tag.У меня такое чувство, что предыдущий разработчик думал, что CKEditor - это большая библиотека, и он хотел включить ее только на определенных страницах администратора, которые в ней нуждались.Как это может быть достигнуто?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Rails предоставит вам файл JavaScript для каждого файла в вашей папке ресурсов JavaScript.Например, у вас должен быть javascript_include_tag для :application из-за этого файла "application.js".Вы включаете ckeditor в свой файл application.js, поэтому ckeditor работает.Но вы пытаетесь включить файл JavaScript для несуществующего ресурса, то есть в вашей папке javascripts нет файла «ckeditor.js».

Это сообщение исходит от Rails, пытающейся найти имя ресурса для файла js, потому что в prod Rails прикрепляет уникальный хеш к имени файла, чтобы предотвратить кеширование.

Это, вероятно, было проблемой все время, и вы просто никогда не замечали файл JavaScript 404ing, и теперь Rails 5.2 о проблеме громче, чем 4.2.

Вы должны просто удалить строку javascript_include_tag.

В качестве альтернативы вы можете создать файл ckeditor.js и переместить //= require ckeditor/init из файла application.js в ckeditor.js.Теперь вы можете сделать javacript_include_tag только на страницах, которые в этом нуждаются.Но будьте осторожны с вашим порядком загрузки.Если в вашем файле application.js есть какие-либо js, которые зависят от ckeditor или наоборот, вам необходимо убедиться, что вы включили файлы в правильном порядке в html (в том же порядке, в котором они были указаны в приложении).JS, если порядок имеет значение).

0 голосов
/ 18 декабря 2018

Это сработало

<%= javascript_include_tag 'ckeditor/init' %>

Я также закомментировал строку в манифесте приложения

// only load on required pages // require ckeditor/init
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...