Не стесняйтесь перейти по ссылке https://sales-community-staging.rainmakers.co/sales-community/, чтобы увидеть проблему. Гарантий того, что она будет доступна вечно, нет.
Я полагаю, что это связано с тем, что в URL не добавляется /sales-community.
Дайте знать, если будет полезно предоставить app.yml или nginx.conf.
Это на version: tests-passed.
Попытался использовать version: stable для исправления, но в данный момент оно не компилируется в Docker (упоминалось в другом отчёте об ошибке, который я видел ранее; я начинал с нуля, а не понижал версию).
Да. Всё остальное работает (публикация, электронная почта, загрузка аватаров, HTTPS и т. д.). Все остальные ресурсы имеют правильные URL-адреса с подпапкой /sales-community (как показано на скриншоте). Сломан только SVG.
У нас уже вся логика для SVG-спрайтов в сценариях с подпапками реализована и успешно используется на ряде сайтов. В данном случае мы столкнулись с очень специфическим пограничным случаем. Проверим ключевые переменные на сайте @vkozyrev (в консоли браузера):
Выглядит хорошо. Теперь, когда мы загружаем лист SVG-спрайтов, мы используем loadScript, который, в свою очередь, вызывает Discourse.getURL. Эта функция отвечает за добавление префикса подпапки. Попробуем это:
Немного покопавшись, мы находим эту строку внутри getUrl:
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
Или, по-русски: «если URL уже содержит префикс подпапки, прекращаем». Таким образом, проблема здесь в том, что префикс подпапки @vkozyrev (/sales-community) включён в середину URL листа SVG-спрайтов:
Я сделал проверку более конкретной, чтобы она проверяла наличие префикса подпапки только в начале URL:
Хотя это заставляет меня задуматься о других потенциальных проблемах… например, если кто-то захочет использовать префикс подпапки /t или /about, или любой другой URL, который мы используем в Discourse
Это удивительный частный случай . Я занимаюсь разработкой на Rails (только в режиме API), и я рад, что не углубился слишком далеко в кроличью нору — иначе бы потерялся в клиентском коде.
На случай, если вам интересно: у меня стоит прокси перед этим, поэтому поддомен sales-community скрыт от пользователей; они видят только /sales-community в начале URL нашего основного сайта. Основной сайт размещён на Heroku, поэтому я не могу использовать один экземпляр nginx для маршрутизации всего трафика.