Есть ли "Rails Way", который включает плагин jQuery в Asset Pipeline?

Многие плагины jQuery имеют следующие структуры каталогов:

/<plugin name>
../css
../images
../js

Файлы CSS обычно имеют относительные ссылки на изображения в них. Что я хочу сделать, это включить эти плагины в Rails Way в разделе Asset Pipeline, и, надеюсь, это не связано с необходимостью переименования ссылок на файлы для удаления относительных ссылок. Есть ли такой путь Rails?

Неужели это также может быть связано с тем, что он излишне включает в себя уже заминированный плагин jQuery в Asset Pipeline?

Ответ 1

Вы должны попытаться добавить свои ресурсы в путь загрузки, который является рекомендуемым способом, насколько мне известно. Если запущенное приложение активировано, то оно должно найти ваши активы после расширения пути в вашем приложении .rb

config.assets.paths << Rails.root.join("plugins/plugin_name/assets/")

Не shure, если это то, о чем вы просили, но если нет, вы должны проверить: http://guides.rubyonrails.org/asset_pipeline.html#asset-organization

Повторите попытку перезагрузки сервера

Ответ 2

У меня была такая же проблема, и я попытался найти "Rails-путь" для этого. И это то, что я закончил в конце дня:

Как уже говорил Роб:

поставщик/активы предназначен для активов, принадлежащих внешним организациям, таких как код для плагинов JavaScript и фреймворки CSS.

Источник: 2.1 Организация активов

Давайте рассмотрим практический пример: используя jquery_datepicker gem (Примечание: нам пришлось использовать обходное решение из-за этой проблемы: пакет пакетов не работает с git источниками).

1) Установка драгоценного камня (довольно сильно):

cd vendor/gems
git clone https://github.com/albertopq/jquery_datepicker.git

2) Добавьте это в свой Gemfile

gem 'jquery_datepicker', :path => 'vendor/gems/jquery_datepicker'

3) Установите тему jquery-ui

  • Из ThemeRoller выберите тему, установите флажок Datepicker и Slider и версия jQuery
  • Загрузка и извлечение содержимого пакета
  • CSS/изображения из папки css/theme-name перемещают их:
    • jquery-ui-1.8.xx.custom.css to app/vendor/stylesheets/
    • папка images на app/vendor/images/ (да, переместите всю папку images, чтобы вы получили что-то вроде этого app/vendor/images/images/ui-icons_256x240.png
  • i18n из папки development-bundle/ui/i18n (необязательно) переместите их в:
    • Создайте папку i18n под app/vendor/javascripts/
    • переместите jquery.ui.datepicker-xx.js в эту папку app/vendor/javascripts/i18n/
    • убедитесь, что папка i18n загружена, поэтому включите ее в application.js
//= require_directory ./i18n

vendor/assets автоматически загружается AFAIK, поэтому вам не нужно включать путь в конвейер активов.

Я хотел бы посмотреть, как другие подходят к этому, это очень хороший вопрос.

Ответ 3

Я думаю, причина, по которой вы не получили ответа, состоит в том, что это неясно, о чем вы спрашиваете. Вы спрашиваете, не переполняете ли вы свои плагины в конвейере активов? Вы спрашиваете, нужно ли переименовывать ссылки на файлы?

Я всегда добавляю все мои jquery-плагины в конвейер моего актива. Overkill или нет, все в одном месте, и они только собираются один раз, поэтому даже если компиляция их занимает больше времени, это не влияет на мое приложение.