Как мне динамически требовать ресурсы в конвейере ресурсов Rails 3.1?

У меня есть система на основе плагинов, которую я использую для разработки приложений в 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, которая генерирует плагин.js при развертывании, но мне бы хотелось чего-нибудь более ясного и элегантного, если это возможно. Спасибо!

РЕДАКТИРОВАТЬ : Решение найдено, будет опубликовано полное решение, как только stackoverflow позволит мне. См. Комментарии ниже в среднем ...

11
задан Irongaze.com 9 December 2011 в 21:45
поделиться