サブフォルダへのインストールでは、Firefox コンソールでソースマップが見つからないというエラーが繰り返し発生していました。
Source map error: request failed with status 404 Resource URL: [https://redacted.com/community/assets/admin-…1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js](https://redacted.com/community/assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js) Source Map URL: /assets/admin-e1c3cbc1d82fc1b0c7d1f24b7b71256a4eb4860f1aa96444925a361d8c24425c.js.map
ご覧の通り、ソースマップの URL から /community というパス接頭辞が欠落しています。
そこで少し調査してみました。
lib/tasks/assets.rake は以下のように記述されています:
assets = cdn_relative_path("/assets")
source_map_root = assets + ((d = File.dirname(from)) == "." ? "" : "/#{d}")
一方、lib/global_path.rb 内の cdn_relative_path は次のようになっています。
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) を返す必要があるのではないかと考えています。