Ответ 1
Так же, как вы сделали для своего пути просмотра, добавьте фильтр до и добавьте новый путь к Rails.application.config.assets.paths
У меня возникла эта идея при просмотре Railscasts # 279 Общие сведения о трубопроводе активов
Rails Asset Pipeline guide дает вам указание использовать 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')
в пути поиска Sprockets, когда хост запроса [subdomain].domain.com
.
ИЗМЕНИТЬ
В итоге я просто сбросил mixin для Sprockets::Environment
, который перезаписывает метод :
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)
Так же, как вы сделали для своего пути просмотра, добавьте фильтр до и добавьте новый путь к Rails.application.config.assets.paths
У меня возникла эта идея при просмотре Railscasts # 279 Общие сведения о трубопроводе активов
Я согласен с комментатором в вопросе о том, что "Консоль активов на самом деле не предназначен для компиляции ваших активов по каждому запросу на производстве". - что делает невозможным то, что вы просите.
Итак, как насчет альтернативы для достижения того, что вы на самом деле пытаетесь выполнить здесь, а это другое разрешение для разных поддоменов. Поместите свои субдоменные ресурсы в подкаталоги ваших папок.
Теперь в представлении/помощниках при вызове resource_path или любых других помощниках, которые принимают относительный путь к ресурсам, попросите его вместо "name_of_asset" вместо "name_of_asset" вместо "# subdomain" /name _of_asset.
Теперь, из-за того, как работает компилятор активов, возможно, этот метод подкаталога не будет работать, вам, возможно, придется помещать субдомен в начало фактического имени файла. "# {} Подобласть _name_of_asset". Не уверен.
И это все равно не даст вам своего рода "дефолтное падение", когда некоторые активы в некоторых поддоменах не имеют субдоменных активов, они просто "проваливаются" до значения по умолчанию. Что было бы неплохо. Возможно, можно понять, как это сделать, не уверен.
Но, во всяком случае, следуя этому подходу к поиску другого актива во время отображения с использованием логики в представлении/помощнике..., вы получите больше, чем ваш оригинальный предложенный подход, что, вероятно, невозможно.