Моя установка в подпапке постоянно выдавала ошибки в консоли Firefox из-за невозможности найти карты исходного кода.
Ошибка карты исходного кода: запрос не удален со статусом 404 URL ресурса: [https://redacted.com/community/assets/admin-…1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js](https://redacted.com/community/assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js) URL карты исходного кода: /assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js.map
Как вы видите, префикс пути /community отсутствует в URL карты исходного кода.
Поэтому я провел небольшое расследование.
lib/tasks/assets.rake делает следующее:
assets = cdn_relative_path("/assets")
source_map_root = assets + ((d = File.dirname(from)) == "." ? "" : "/#{d}")
А вот как выглядит cdn_relative_path в lib/global_path.rb:
module GlobalPath
def path(p)
"#{GlobalSetting.relative_url_root}#{p}"
end
def cdn_path(p)
GlobalSetting.cdn_url.blank? ? p : "#{GlobalSetting.cdn_url}#{path(p)}"
end
def upload_cdn_path(p)
if SiteSetting.Upload.s3_cdn_url.present?
p = Discourse.store.cdn_url(p)
end
(p =~ /^http/ || p =~ /^\/\//) ? p : cdn_path(p)
end
def cdn_relative_path(path)
if (cdn_url = GlobalSetting.cdn_url).present?
URI.parse(cdn_url).path + path
else
path
end
end
Как вы видите, и cdn_path, и upload_cdn_path в конечном итоге вызывают метод path, который гарантирует, что подпапка будет добавлена в качестве префикса. Однако cdn_relative_path не вызывает метод path, а просто возвращает свой параметр (называемый… path).
Кстати, мне кажется, что cdn_path также должен возвращать path(p) в средней части тернарного оператора?