Недоступно множество файлов JavaScript. Это были первые найденные.
Первичный анализ:
Файлы недоступны через мою CDN.
CDN подтягивает данные из моего S3-бакета.
Файлов нет в моём S3-бакете, где хранятся все остальные активы.
Просматривая результаты пересборки, я вижу следующее:
Четыре файла были созданы и записаны в public/assets/ с расширением .js.
Четыре файла были сжаты и сохранены с расширением .br.js.
Проверка сервера:
Все 4 файла .js доступны на моём сервере.
Файлы .br.js недоступны на моём сервере.
Файлы .br.js отсутствуют в моём S3-бакете.
Анализируя результаты пересборки, похоже, что активность after_assets_precompile не выполняется при моих пересборках. Я могу вручную выполнить rake s3:upload_assets, и активы будут перенесены в S3, после чего всё работает корректно.
Я проверил следующее:
Мой файл .yml проходит проверку на правильное форматирование.
Что можно проверить, чтобы определить, почему after_assets_precompile не обрабатывается в рамках пересборки?
Примечание: Я использую версию: 3.4.0.beta4-dev - 6a50b3d4b4
Вы можете найти эту rake-задачу там и затем запустить её внутри контейнера (чтобы сэкономить время на пересборку). После этого выполните пересборку, как только отредактируете ваш файл yml.
S3 работает на сайте уже 43 дня. Команды rake были добавлены туда в рамках установки S3.
Сайт пересобирался как минимум 30 раз. По ходу работы я добавлял дополнительные плагины и компоненты. Это говорит о том, что файлы .js добавлялись и размещались в бакете S3.
Компонент S3 работал отлично. Это первый раз, когда у меня возникли проблемы с миграцией файлов в S3.
Что можно проверить, чтобы понять, почему файлы не были перемещены?
Кто-нибудь знает, что могло помешать выполнению after_assets_precompile?
В качестве теста я переместил команды after_assets_precompile в раздел пользовательских команд.
run:
- exec: echo "Начало пользовательских команд"
## Если вы хотите установить адрес электронной почты 'From' для вашей первой регистрации, раскомментируйте и измените:
## После получения первого письма с регистрацией снова закомментируйте строку. Её нужно выполнить только один раз.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Команда для защиты сайта паролем во время работы. Удалите для продакшена.
- exec:
cd: $home
cmd:
- echo "Начало команд precompile"
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
- exec: echo "Конец пользовательских команд"
Команды выполнились без каких-либо проблем. Это исключает проблемы с доступом к окружению или вопросы безопасности.
Процесс launcher пропускает код after_assets_precompile во время пересборки.
У кого-нибудь есть идеи?
@supermathie — вы просто чудесны, у вас невероятное зрение. Вы смогли заметить, что код не был отступлен на два пробела, и это было видно только по одному фрагменту, а не по всему обширному разделу. Спасибо.
Я добавил два пробела, и проблема была решена.
Ранее я проверял файл app.yml с помощью валидатора YAML. Инструмент тестирования сообщил, что файл структурно корректен, но не смог определить, что он функционально неверен.