Подтвердить что ты не робот

Как добавить пути поиска активов к Sprockets на основе поддомена подстановочных знаков в rails 3.1?

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)
4b9b3361

Ответ 2

Я согласен с комментатором в вопросе о том, что "Консоль активов на самом деле не предназначен для компиляции ваших активов по каждому запросу на производстве". - что делает невозможным то, что вы просите.

Итак, как насчет альтернативы для достижения того, что вы на самом деле пытаетесь выполнить здесь, а это другое разрешение для разных поддоменов. Поместите свои субдоменные ресурсы в подкаталоги ваших папок.

Теперь в представлении/помощниках при вызове resource_path или любых других помощниках, которые принимают относительный путь к ресурсам, попросите его вместо "name_of_asset" вместо "name_of_asset" вместо "# subdomain" /name _of_asset.

Теперь, из-за того, как работает компилятор активов, возможно, этот метод подкаталога не будет работать, вам, возможно, придется помещать субдомен в начало фактического имени файла. "# {} Подобласть _name_of_asset". Не уверен.

И это все равно не даст вам своего рода "дефолтное падение", когда некоторые активы в некоторых поддоменах не имеют субдоменных активов, они просто "проваливаются" до значения по умолчанию. Что было бы неплохо. Возможно, можно понять, как это сделать, не уверен.

Но, во всяком случае, следуя этому подходу к поиску другого актива во время отображения с использованием логики в представлении/помощнике..., вы получите больше, чем ваш оригинальный предложенный подход, что, вероятно, невозможно.