Solución de canalización de activos de Rails para el selector IE 4096 / límite de hojas de estilo

El problema

Documentación de soporte de IE de Microsoft Explica que en Internet Explorer 6-9:

Todas las etiquetas de estilo después de las primeras 31 etiquetas de estilo no se aplican.No se aplican todas las reglas de estilo después de las primeras 4,095 reglas.En las páginas que usan la regla de importación para importar continuamente hojas de estilo externas que importan otras hojas de estilo, las hojas de estilo que tienen más de tres niveles de profundidad se ignoran.

Hay mucha evidencia de este problema condemostraciones de guiones. Ver tambiénBendecir.

Solución necesaria

Necesitamos una forma de dividir las hojas de estilo compiladas generadas por Sprockets en el canal de activos para mantener el recuento máximo de selector por debajo de 4096, y enlazarlas en el HTML de una aplicación Rails implementada.¿Cómo podemos pasar la salida compilada de activos procesados ​​(específicamente hojas de estilo) como un argumento a un método que luego puede modificar los archivos?

Vea los siguientes intentos de un lugar para comenzar. Si alguien pudiera ayudarme a encontrar una manera de hacer operativa (o una solución completamente nueva), ¡sería fantástico!

Intentos de solución existentes

Bendecir fue creado para resolver este problema al dividir las hojas de estilo para mantener el recuento máximo de selector por hoja por debajo del límite. Bless se ejecuta en el servidor en node.js. No he visto un equivalente de Ruby todavía. Eric Fields trató deServir activos compilados con brújula para bendecir (ejecutándose en el nodo), pero esa solución depende de que Compass maneje la compilación de activos y, por lo tanto, no parece funcionar con el flujo de activos.Tenga en cuenta que, en lugar de vincularse a varias hojas de estilo, Bless agrega@include declaraciones a la primera hoja, que puede ser el camino a seguir para evitar tocar el marcado.

Cuando Christian Peters (@crispy)descubrí este problema, élimplementado un divisor como Bless, que también pasó la salida de Compass a un módulo personalizado, que funcionó muy bien antes de Rails 3.1. Despues eladaptó su divisor con un SprocketsEngine para la integración con el oleoducto Rails Asset. He intentado implementar el nuevo código, pero no parece funcionar automáticamente (aunque el splitter funciona bien cuando se llama manualmente en la consola).

Información relacionada

Para obtener más información sobre los límites de CSS en IE 6-9, consulte estas preguntas relacionadas:

¿Tiene IE 8 un límite en el número de hojas de estilo por página?Límites de las reglas de CSS de Internet Explorer

Respuestas a la pregunta(2)

Su respuesta a la pregunta