Добавить папку в путь конвейера к ресурсам?
У нас есть приложение rails, которое я недавно обновил с Rails 3.0 до Rails 3.2. Это приложение обслуживает несколько клиентов. Чтобы настроить его для каждого клиента, у нас есть каталог app/themes
. В нем есть подмодули. Каждый подмодуль содержит такие вещи, как locales/en.yml
, views/layouts
, views/controller_name
и т.д. Мы используем prepend_view_path
для добавления представлений тем и I18n.load_path
для добавления в локали. Мы рассматриваем использование конвейера активов, чтобы мы могли сохранить все компоненты клиентского материала из общего каталога и сохранить его в каждой теме.
Есть ли способ, которым я могу динамически сканировать рельсы для загрузки той папки темы/темы/имени/ресурсов, которую я хочу? Мы используем логику настроек, чтобы установить, какая тема активна. Поэтому, если у меня установлена тема "google", ApplicationController
затем загружает файлы из пути:
app/themes/google/locales/*.yml
app/themes/google/views
То, что я хотел бы сделать, это иметь файл манифеста,
app/themes/google/assets/stylesheets/application.css
легко доступен для макета, как и в файле app/views/layouts
:
= stylesheet_link_tag "application"
Есть ли способ, которым я могу это сделать? или нам нужно вручную переместить активы в каталог фактических активов?
Ответы
Ответ 1
Возможно это сделать в application.rb:
require "#{Rails.root}/app/models/settings.rb"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/stylesheets"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/images"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/javascripts"