2012-01-25 16 views
53

He estado haciendo la transición de una aplicación a Rails 3.1 (y ahora a 3.2) y vi el Railscast on the asset pipeline. Moví todos mis archivos de complemento de jquery de terceros al directorio/vendor/assets/javascripts /. En mis /app/assets/javascripts/application.js Tengo el siguiente:Rails asset Pipeline: forma estándar para incluir todo/vendor/assets/javascripts /?

//= require jquery 
//= require jquery_ujs 
//= require_tree . 
//= require_self 

me di cuenta de la llamada require_tree . sólo carga el árbol para el/app/activos/javascript/directorio. (¿Es correcto?) ¿Cuál es la mejor manera de incluir todos los javascripts "proveedores"? (No estoy preocupado por ordenar en este momento). Por supuesto que podría requerirlos línea por línea en /app/assets/javascripts/application.js. Mi otra idea era crear /vendor/assets/javascripts/vendor_javascripts.js con lo siguiente:

//= require_tree . 

Y luego, en /app/assets/javascripts/application.js agregar lo siguiente:

//= require vendor_javascripts 

Esto parece un poco torpe sin embargo. ¿Hay una mejor manera de incluir automáticamente todos los javascripts "proveedores" (y/o "lib")?

PS. Vi this about index.js files, pero posiblemente terminaría con varios archivos llamados index.js, ¿verdad? Ah, y traté de reiniciar mi servidor en todo momento.

Respuesta

72

Puede añadir algo como esto en su archivo app/assets/javascripts/application.js para incluir todos los archivos JavaScript vendedor:

//= require_tree ../../../vendor/assets/javascripts/. 
+1

Olvidé toda la ruta relativa de los caminos :) ¡Gracias, funciona genial! – robertwbradford

+0

¡Trabajó para mí también, gracias! –

+11

En realidad, creo que el enfoque sugerido de OP es menos torpe – kizzx2

21

Sé que es una vieja pregunta, pero se puede crear un archivo de manifiesto en la carpeta vendedor/activos/javascript :

#vendor/assets/javascripts/my_jquery_plugins/manifest.js 
# require_tree . 

Y en que application.js:

//= require my_jquery_plugins/manifest.js 

I f estás utilizando los carriles 4, el nombre de la manifest.js como index.js y en su application.js:

//= require my_jquery_plugins 

Es menos hacky de ruta relativa descrita.

Cuestiones relacionadas