2012-03-08 17 views
8

Tengo estos archivos en mi carpeta lib/assets (sketchyPad es un plugin jQuery para dibujar en canvas html5 y farbastic es un selector de color utilizado por sketchyPad) :cómo especificar la ruta al archivo js en lib/assets usando carriles 3.2 canalización de activos

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 

Así que desea incluir sketchyPad.js, sketchyPad.css y también todos los js en los cepillos de carpeta y archivo también la farbtastic.min js.

en app/activos/javascript/application.js pongo:

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

pero también quiero incluir

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

y archivos de cualquier otro js en la carpeta de pinceles, ¿cómo puedo ¿Usar require_directory cuando no está en la aplicación/activos sino en lib/assets o vendor/assets?

Actualización:

He tratado

require_tree sketchyPad 

pero los errores con:

require_tree argument must be a relative path 

He tratado

require_tree ./sketchyPad 

pero los errores con:

require_tree argument must be a directory 

creo require_tree debe ser relativa a la carpeta app/activos, pero poner algo así como

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

también da error:

argumento require_tree debe ser un directorio

Eitherway I no quiero incluir todo el árbol de sketchyPad, porque contiene algunos archivos js que no quiero incluir ... como ejemplos y su propia versión de jQuery antiguo.

ACTUALIZACIÓN:

Lo que terminé haciendo fue la creación de un lib.js en los lib/activos/javascript carpeta con un manifiesto para incluir archivos de la sketchyPad js como en relación con el lib/activos carpeta en lugar de la aplicación/carpeta de activos.

en app/activos/javascript/application.js pongo:

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

y en lib/activos/javascript/lib.js puse:

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

Eso parece incluir la archivos correctos. ¿Hubo una manera más fácil de hacer esto?

+0

Pregunta: ¿Dónde está el archivo en el que desea colocar la directiva de importación? –

Respuesta

2

Tal vez:

//= require_tree ./sketchyPad 
+0

no, eso da el error "El argumento require_tree debe ser una ruta relativa" (ver mis actualizaciones) – Homan

+1

¿Qué tal la versión editada? Oh, no importa, veo este ejemplo en tu actualización. –

2

No hay necesidad de crear/cambiar manifiesto, sólo tiene que añadir la siguiente línea a application.rb

config.autoload_paths += %W(#{config.root}/lib) 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 
1

La forma rieles (según this answer que funcionó para mí) sería crear un archivo index.js en lib/assets/sketchyPad con solo

//= require_tree . 

Aunque parece que el complemento es bastante extenso, me imagino que tendrá que dividirlo aún más en subdirectorios.

Cuestiones relacionadas