Reparación de activos previos para el archivo manifiesto de subdirectorio
-
25-10-2019 - |
Pregunta
Estoy usando Rails 3.1 y debajo de los activos tengo archivos como este:
assets
javascripts
admin
admin.js
a1.js
client
client.js
c1.js
Admin.js se ve así
//
//= require jquery
//= require jquery_ujs
//= require a1
Client.js se ve así
//
//= require jquery
//= require c1
Todo funciona bien en el modo de desarrollo. Cuando hago activos de rastrillo: precompilar, entonces no veo ningún archivo JavaScript en público/activo. Veo todas las hojas de estilo en público/activos.
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 subdirectorio.
Entonces, ¿es esto cierto que los activos de rastrillo: precompil no busca subdirectorios?
Alguna sugerencia en como arreglar esto. Prefiero tener los archivos de la forma en que presenté porque tengo un montón de archivos JavaScript.
Solución
Hay una matriz de precompilación en la configuración de Rails que establece qué archivos precompilará. Application.js y Application.css en ningún directorio.
Deberá agregar sus 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"
Otros consejos
En Rails 3.2.6, al administrar los activos de JavaScript en subdirs, puede nombrar el manifiesto para cada subdir 'index.js' (en oposición a 'admin.js' y 'client.js'), y luego en config/entornos /Production.RB Di:
config.assets.precompile += ['admin.js', 'client.js']
La magia detrás de escena se verá en el subdir de administración y se compilará de acuerdo con las especificaciones en index.js, emitiendo a administrador.js; Del mismo modo para el cliente.
Luego se pueden acceder a los activos a través de:
javascript_include_tag 'admin'