как указать путь к файлу js в lib / assets с помощью конвейера ресурсов rails 3.2 - PullRequest
8 голосов
/ 08 марта 2012

У меня есть эти файлы в моей папке lib / assets (sketchyPad - это плагин jQuery для рисования на холсте html5, а farbastic - палитра цветов, используемая sketchyPad):

lib/
|-- assets
|   |-- javascripts
|   |   `-- lib.js
|   `-- sketchyPad
|       |-- README.md
|       |-- brushes
|       |   |-- simple.js
|       |   `-- smooth.js
|       |-- example
|       |   |-- index.html
|       |   |-- jquery-ui-1.8.16.custom
|       |   |   |-- css
|       |   |   |   `-- ui-lightness
|       |   |   |       |-- images
|       |   |   |       |   |-- ui-bg_diagonals-thick_18_b81900_40x40.png
|       |   |   |       |   |-- ui-bg_diagonals-thick_20_666666_40x40.png
|       |   |   |       |   |-- ui-bg_flat_10_000000_40x100.png
|       |   |   |       |   |-- ui-bg_glass_100_f6f6f6_1x400.png
|       |   |   |       |   |-- ui-bg_glass_100_fdf5ce_1x400.png
|       |   |   |       |   |-- ui-bg_glass_65_ffffff_1x400.png
|       |   |   |       |   |-- ui-bg_gloss-wave_35_f6a828_500x100.png
|       |   |   |       |   |-- ui-bg_highlight-soft_100_eeeeee_1x100.png
|       |   |   |       |   |-- ui-bg_highlight-soft_75_ffe45c_1x100.png
|       |   |   |       |   |-- ui-icons_222222_256x240.png
|       |   |   |       |   |-- ui-icons_228ef1_256x240.png
|       |   |   |       |   |-- ui-icons_ef8c08_256x240.png
|       |   |   |       |   |-- ui-icons_ffd27a_256x240.png
|       |   |   |       |   `-- ui-icons_ffffff_256x240.png
|       |   |   |       `-- jquery-ui-1.8.16.custom.css
|       |   |   `-- js
|       |   |       `-- jquery-ui-1.8.16.custom.min.js
|       |   |-- jquery.min.js
|       |   `-- mattfarina-farbtastic-4bb6bbf
|       |       |-- CHANGELOG.html
|       |       |-- LICENSE.txt
|       |       |-- README.html
|       |       |-- README.md
|       |       |-- demo1.html
|       |       |-- demo2.html
|       |       |-- farbtastic.css
|       |       |-- farbtastic.js
|       |       |-- farbtastic.min.js
|       |       |-- marker.png
|       |       |-- mask.png
|       |       `-- wheel.png
|       |-- sketchyPad.css
|       `-- sketchyPad.js

Поэтому я хочу включить sketchyPad.js, sketchyPad.css, а также все файлы js в папке кистей, а также файл farbtastic.min js.

В app / assets / javascripts / application.js я вставил:

//= require sketchyPad (this part works fine and correctly includes sketchyPad.js)

, но я также хочу включить

lib/assets/sketchyPad/brushes/simple.js
lib/assets/sketchyPad/brushes/smooth.js

и любые другие файлы js в папку brushes, как мне использовать require_directory, когда он находится не в приложении / assets, а в lib / assets или vendor /активы?

Обновление:

Я пытался

require_tree sketchyPad

, но ошибки:

require_tree argument must be a relative path

Я пытался

require_tree ./sketchyPad

но ошибки с:

require_tree argument must be a directory

Я думаю, что require_tree должен относиться к папке app / assets, но если указать что-то вроде

require_tree ./../lib/assets/sketchyPad/brushes

, также выдается ошибка:

Аргумент require_tree должен быть каталогом

В любом случае я не хочу включать все дерево sketchyPad, поскольку оно содержит некоторые js-файлы, которые я не хочу включать ... например, примеры и собственную версиюболее старый jQuery.

ОБНОВЛЕНИЕ:

Я закончил тем, что создал lib.js в папке lib / assets / javascripts с манифестом, включающим js-файлы sketchyPad относительно lib.Папка / assets, а не папка app / assets.

в app / assets / javascripts / application.js Я помещаю:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require lib

и в lib / assets / javascripts / lib.jsЯ положил:

//= require ./../sketchyPad/sketchyPad
//= require_tree ./../sketchyPad/brushes
//= require ./../sketchyPad/example/mattfarina-farbtastic-4bb6bbf/farbtastic.min

Это, кажется, включает в себя правильные файлы.Был ли более простой способ сделать это?

Ответы [ 3 ]

2 голосов
/ 04 апреля 2012

Нет необходимости создавать / изменять манифест, просто добавьте следующую строку в application.rb

config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
2 голосов
/ 08 марта 2012

Возможно:

//= require_tree ./sketchyPad
1 голос
/ 26 июля 2013

Способ Rails (согласно этому ответу , который работал для меня) заключался бы в создании index.js файла в lib/assets/sketchyPad всего с

//= require_tree .

Несмотря на то, что плагин выглядит достаточно обширным, я думаю, вам придется разделить его на подкаталоги.

...