2011-11-29 15 views
8

estoy usando Rails 3.1 y en el activo Tengo archivos como este:activo compilación previa de archivo de manifiesto subdirectorio

assets 
    javascripts 
    admin 
     admin.js 
     a1.js 
    client 
     client.js 
     c1.js 

admin.js parece que esta

// 
//= require jquery 
//= require jquery_ujs 
//= require a1 

Client.js tiene este aspecto

// 
//= require jquery 
//= require c1 

Todo funciona bien en modo de desarrollo. Cuando hago rake assets: precompile, entonces no veo ningún archivo javascript en public/assets. Veo todas las hojas de estilo en public/assets.

Creo que esto tiene que ver con el hecho de que los archivos de manifiesto (admin.js y client.js) en este caso están en el subdirectorio.

¿Es esto cierto que los activos de rake: la precompilación no analiza los subdirectorios?

Cualquier sugerencia sobre cómo solucionar esto. Prefiero tener los archivos de la manera que expuse porque tengo un montón de archivos javascript.

Respuesta

11

Hay una matriz de precompilación en la configuración de Rails que establece qué archivos precompilar. application.js y application.css en cualquier directorio.

Tendrá que añadir los archivos a la matriz de precompilación:

 
config.assets.precompile += ['admin/admin.js', 'client/client.js'] 

y deben ser accesibles a través de:

 
javascript_include_tag "admin/admin.js" 

y

 
javascript_include_tag "client/client.js" 
3

En los carriles 3.2.6 , al administrar activos de JavaScript en subdirectorios, puede asignarle un nombre al manifiesto para cada subdirectorio 'index.js' (en oposición a los OP's 'admin.js' y 'Client.js'), y luego en config/ambientes/production.rb dicen:

config.assets.precompile += ['admin.js', 'client.js'] 

magia detrás de las escenas se verá en el subdirectorio de administración y compilar de acuerdo con las especificaciones del índice .js, dando salida a admin.js; del mismo modo para el cliente.

Los activos serán entonces accesibles a través de:

javascript_include_tag 'admin' 
Cuestiones relacionadas