У меня есть система на основе плагинов, которую я использую для разработки приложений в 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")
%>
Но я обнаружил, что фаза требования/директивы компиляции конвейера ресурсов происходит до расширения ERB, поэтому сгенерированные комментарии просто заканчивались комментариями.
Есть ли другой механизм включения путей для компиляции, который мог бы работать? Можно ли предварительно обработать файл манифеста до обработки директивы?
Если я не могу придумать ничего лучше, мне, возможно, придется написать задачу rake/deployment, которая генерирует файл манифеста plugin.js при развертывании, но я бы предпочел что-то более четкое и элегантное, если это возможно. Спасибо!
EDIT: решение найдено, полное решение будет опубликовано, как только stackoverflow позволит мне это сделать. Смотрите комментарии ниже в то же время ...
require_asset
вручную и использовать это в итерации цикла для выполнения необходимой работы. Рад слышать, что ваше предыдущее решение было неверным, сомневался в своем здравом уме, пытаясь воспроизвести его. Спасибо за помощь! - person Irongaze.com   schedule 10.12.2011