Rails 资产管道指南指导您使用config.assets.paths
,但此时config/application.rb
我无权访问请求的子域。
我希望能够根据请求的子域预先添加一个额外的路径(仅适用于当前请求)。
我的应用程序特定详细信息
这是一个基本的 CMS 应用程序。根domain.com
主机使用标准控制器/视图呈现和默认资产路径处理管理部分。
请求subdomain.domain.com
基于subdomain
. prepend_view_path
它只为当前请求调用before_filter
并添加 。Rails.root.join('vendor/sites/[subdomain]/templates')
我希望能够Rails.root.join('vendor/sites/[subdomain]/assets')
在请求主机为[subdomain].domain.com
.
编辑
我最终只是加入了一个 mixin,因为Sprockets::Environment
它覆盖了call方法:
module SiteAssetsResolver
def call(env)
begin
# prepend path based on subdomain (from env)
super # Sprockets::Server#call
ensure
# remove path based on subdomain
end
end
end
MyApp::Application.assets.extend(SiteAssetsResolver)