Активы двигателя с Rails 3.1 - PullRequest
27 голосов
/ 04 мая 2011

Как предоставить ресурсы в движке в Rails 3.1? Где они должны быть расположены и могут ли они быть включены автоматически?

( первоначально спросил Томас Селизна )

1 Ответ

41 голосов
/ 04 мая 2011

Пути к папкам ресурсов всех ядер загружаются автоматически.

По умолчанию сами ресурсы не загружаются.Это понятно, так как загрузка выполняется с помощью require_tree ., который загружает все css / js из текущей папки (то есть папки основных ресурсов приложения), но ничего не говорит о ресурсах движков.

Простое решение - попросить пользователя запросить js / css в application.js / css или там, где это необходимо.Поскольку пути загружены правильно, пользователю нужно только указать имя вашего ресурса (я бы порекомендовал использовать имя вашего движка).Пример:

Добавлен к main_app/app/assets/javascripts/application.js:

//= require your_engine_name

Если вы разбили JS на разные файлы, ваш файл your_engine_name/app/assets/javascripts/your_engine_name.js может иметь следующее:

//= require_tree .

Это загрузит все файлы js в your_engine_name/app/assets/javascripts/, как "."относится к локальной папке (в данном случае это папка javascripts вашего движка).

Обратите внимание, что ActionView::Helpers::AssetTagHelper.register_javascript_expansion, по-видимому, не имеет никакого эффекта, когда установлено config.use_sprockets.Я надеюсь, что они, по крайней мере, поставят предупреждение в этом случае.

Если у вас есть задача rake для установки вашего движка, тогда вы можете сделать добавление к application.js.

Другой способчтобы пользователь включил его, нужно вставить <%= javascript_include_tag "your_engine_name" %> в макет erb.

Я не думаю, что есть способ вставить его автоматически

...