17

La versión de lanzamiento de Rails 3.1 está teniendo algunos problemas extraños al precompilar un archivo de manifiesto sass con la extensión scss. Lo extraño es que el archivo de manifiesto predeterminado application.scss compila bien y lo veo en public/assets/.Precompilación de un archivo de manifiesto .scss utilizando la canalización de activos de Rails 3.1

Sin embargo, cuando intento compilar mis archivos de manifiesto personalizados, no se crea nada. He habilitado la opción de precompilación en la configuración de producción.

config.assets.precompile += %w(user.scss admin.scss) 

Me postulo la tarea de precompilación rastrillo correctamente en la medida de una que conozco.

rake assets:precompile RAILS_ENV=production 

Y tal vez esto ayude. Cuando creo dos nuevos archivos de manifiesto con la extensión css en lugar de scss y requiero los archivos scss originales en ellos, estos nuevos archivos de manifiesto se respetan y se compilan correctamente. ¿Por qué application.scss recibe este tratamiento especial y no otros archivos manifiestos sass?

+0

Buena pregunta, desearía saber la respuesta. – Andrew

+0

¿Alguna razón para no aceptar la respuesta a continuación? – tee

+0

No realmente, solo que no he probado su solución desde que pasé a otras cosas. – Anurag

Respuesta

27

Incluir los compilados nombres de archivo en la lista de compilación previa:

config.assets.precompile += %w(user.css admin.css) 

Además, es posible que desee cambiar el nombre de los archivos originales en app/assets/stylesheets de incluir la extensión compilada en los nombres de archivo originales así que está claro lo que está pasando en:

user.scss -> user.css.scss 
admin.scss -> admin.css.scss 
+0

¡Buen trabajo! Gracias – abhijit

-2

Sospecho que podría ser un error. Los archivos application se tratan como los archivos principales de un proyecto predeterminado. El que termina en .css y .js se incluye en la lista de precompilación de forma predeterminada.

El comportamiento que describes (se manifiesta con una extensión .css) es el correcto.

Cuestiones relacionadas