У меня есть система на основе плагинов, которую я использую для разработки приложений в Rails. Каждый плагин реализует движок с компонентами MVC и т.д. Основным приложением является просто пустая привязка, которая делегирует всю работу установленным плагинам.
В настоящее время я обновляюсь до Rails 3.1 из Rails 2.3.5 и пытаюсь подключить конвейер к моей инфраструктуре.
Проблема, с которой я сталкиваюсь, заключается в попытке программно потребовать, чтобы мои плагиновые активы были, например, в манифесте application.js.
Я могу вручную добавить их так:
//= require <plugin_manifest_path>
И все работает так, как ожидалось. Однако, поскольку в моей среде есть десятки плагинов, и каждая установка имеет другой микс, я хочу, чтобы это изменение манифеста основывалось на том, какие плагины установлены. Я попробовал это как решение:
<%=
Rails.plugins.collect do |plugin|
"//= require #{plugin}"
end.join("\n")
%>
Но я обнаружил, что фаза require/directing компиляции конвейера активов происходит до расширения ERB, поэтому сгенерированные комментарии просто заканчиваются как комментарии.
Есть ли другой механизм включения путей для компиляции, который может работать? Любой способ предварительно обработать файл манифеста до того, как обработка директивы начнется?
Если я не могу придумать ничего лучше, мне, возможно, придется написать задачу rake/deployment, которая генерирует файл манифеста plugin.js при развертывании, но мне бы хотелось, чтобы это было более ясно и элегантно. Спасибо!
EDIT. Решение найдено, опубликует полное решение, как только stackoverflow позволит мне. См. Комментарии ниже в среднем времени...