En Rails 3.1, debe incluir en la lista blanca los archivos que desee incluir en la precompilación de activos. Debe abrirse config/ambientes/production.rb e incluir explícitamente los activos que desea precompilado:¿Cuál es el propósito de config.assets.precompile?
config.assets.precompile += ['somestylesheet.css']
Si no lo hace esto y se ejecuta activos rastrillo: precompilación, su activo no lo hará se copiará en public/assets, y su aplicación generará una excepción (por lo tanto, producirá un error de 500 en la producción) cuando no se encuentre un activo.
¿Por qué es esto necesario? ¿Por qué no están todos los activos precompilados automáticamente?
Este enfoque actual crea un código adicional y estrés cuando se implementa. ¿No sería más fácil incluir o excluir activos de modo que todo salga bien? ¿Alguien más comparte estos sentimientos?
Solo para aclarar, esto es más una crítica a la necesidad de ** especificar ** un activo. El proceso de precompilación de rieles no solo compila código, sino que también copia el código de recurso compilado en un directorio público para su servidor web. Incluso si un activo no requiere compilación (como un archivo '.js' simple), aún necesita decirle a su aplicación que lo" precompile ", para que se copie en' public/assets '. Si no lo hace, la página que requiere el activo arroja una excepción. – dhulihan
Si está en la práctica de combinar y minificar archivos, probablemente no quiera precompilar todos sus recursos. Esta técnica es para activos que planea incluir individualmente. Por ejemplo, en application.js, puede '// 'requerir' muchos otros archivos JS que no necesitan ser precompilados. –
@Simon Peck: tiene razón, algunos activos no necesitan ser precompilados, pero si no están incluidos explícitamente, no se copiarán en la ubicación del activo final (por ejemplo: 'public/assets'), y no se encontrará cuando se solicite. Agregar el activo a 'application.js' utilizando' // = require' funciona, pero agrega una sobrecarga de ancho de banda y no es apropiado para activos que no se usarán en todo el sitio. – dhulihan