Я пишу монтируемый движок Rails 3.1, который добавляет функции в основное приложение (т. е. он не изолирован).JS движка зависит от jQuery, jQueryUI, DataTablesи JSTree(среди других библиотек), поэтому манифест движка выглядит примерно так: :
// my_engine.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jstree_pre1.0_fix_1/jquery.jstree.js
//= require_tree .
Затем я могу условнозагрузить этот файл в макет основного приложения, используя:
<%= javascript_include_tag 'application' %>
<%= javascript_include_tag 'my_engine/my_engine' if user_logged_in? %>
Однако, если манифест основного приложения уже включает одну из зависимостей (скорее всего, jQuery и jQuery_UJS), то эти зависимости будет загружен дважды. Я увижу что-то вроде:
...
...
Sprocketдиректива require
потребует актива только один раз в одном и том же пакете, но здесь я работаю с двумя пакетами. Чтобы упростить другим разработчикам реализацию моего движка, я бы хотел, чтобы они могли включить одну строку, которая определяет, включены ли уже общие зависимости. Есть ли хороший способ сделать это с помощью Sprockets?