Manuel Alejandro González Cabello
Aquí se puede encontrar la información oficial del assetpipeline
Eduardo Rafael Romero Bernal
¿Se puede integrar rails con VITE?
Marco montalvan
Cuando desarrollas una aplicación web con Ruby on Rails, uno de los aspectos que más impacta en la experiencia visual y el rendimiento es la forma en que gestionas tus assets. Comprender cómo Rails organiza, transforma y entrega estos recursos es fundamental para construir páginas rápidas, seguras y bien estructuradas.
¿Qué son los assets y por qué importan en tu aplicación web?
Los assets son todos los insumos que necesita tu página para ir más allá del texto plano [0:10]. Hablamos de reglas de estilo (CSS), scripts de JavaScript, imágenes y fuentes tipográficas que hacen que la interacción visual sea más agradable e interesante.
Gran parte de los problemas de renderización en una página web se relacionan con la forma en que se gestionan estos assets internamente [0:48]. Por eso, Rails establece condiciones claras para desplegarlos correctamente:
¿Cómo funciona el asset pipeline en Rails?
El asset pipeline es el componente central que Rails utiliza para procesar todos los assets antes de enviarlos al navegador [1:42]. Puedes imaginarlo como una banda transportadora con varias fases, donde cada asset pasa por distintos estados hasta convertirse en el paquete final que recibe el usuario.
¿Qué ocurre en la fase de transformación?
La primera fase convierte dialectos o metalenguajes en archivos estándar [2:14]. Por ejemplo, si escribes tus estilos en Sass, un dialecto que comprime y optimiza la forma de escribir CSS, el pipeline se encarga de transformar automáticamente ese Sass en CSS listo para el navegador. Esto hace el desarrollo más ágil porque reduces la repetición de código.
¿Qué es la concatenación y por qué mejora el rendimiento?
Después de la transformación viene la concatenación [3:07]. Mediante un archivo llamado manifest y una tecnología de Rails conocida como Sprockets, varios archivos CSS o Sass se condensan en uno solo. La ventaja es clara: en el flujo de petición-respuesta HTTP, el navegador solicita un único recurso en lugar de múltiples archivos, lo que acelera la carga.
¿Cómo se comprimen y protegen los assets?
Una vez concatenados, los archivos pasan por el compresor [3:48]. Este proceso elimina espacios innecesarios, renombra variables y genera una versión minificada del archivo. Finalmente, se le asigna un fingerprint, un ID único basado en el contenido [4:06]. Si el contenido cambia, el ID cambia, y el sistema de caching sabe que debe solicitar la nueva versión al servidor. Sin este mecanismo, podrías modificar tus estilos y no ver los cambios reflejados.
Las cuatro fases del pipeline son entonces: transformación, concatenación, compresión y fingerprinting [4:42].
¿Cómo se integran los assets dentro del layout de una página?
Una página web típica tiene secciones recurrentes: una barra de navegación, un contenedor principal y un footer o pie de página [5:08]. En Rails, no necesitas repetir esta estructura en cada página que crees. Aquí entra el concepto de layout.
El layout funciona como una plantilla o molde que se reutiliza en todas las páginas [6:05]. Dentro de este molde, el enlace con el asset pipeline se establece a través del sprocket manifest, donde referencias todos los assets que utilizarás [5:30].
Dos conceptos complementan esta arquitectura:
En las versiones más recientes, Rails incorporó además el Webpacker, que integra webpack para gestionar assets basados en JavaScript [6:56]. Mientras que el Gemfile administra las librerías de Ruby, en el ecosistema JavaScript se utiliza Yarn como gestor de paquetes [7:24]. Esto permite tener dos manejadores de assets trabajando en conjunto: el pack helper vinculado a Webpacker y el sistema de Sprockets conectado al asset pipeline [7:38].
A medida que ganes experiencia, podrás decidir si usas ambos sistemas juntos o solo uno, dependiendo de las necesidades de tu proyecto. ¿Ya has trabajado con alguno de estos enfoques? Comparte tu experiencia en los comentarios.
Manuel Alejandro González Cabello
Aquí se puede encontrar la información oficial del assetpipeline
Eduardo Rafael Romero Bernal
¿Se puede integrar rails con VITE?
Marco montalvan
Omar Montoya
Lo maravilloso de Rails es que aplica muy bien el principio de DRY. Los parciales permiten hacer mas rapido las paginas y no caer en repeticiones. Es muy limpio en ese sentido.
braison crece
Hola, soy nuevo por aquí! Quería decir que llevo unos 4 meses aprendiendo Rails por mi cuenta, todo a través de contenido en Inglés, y puedo decir dos cosas:
Por último… He venido para quedarme! Un saludo a todos
Ricardo Aguilar
¿Cuales son esos contenidos en inglés? Mientras más información sobre Rails tenga mejor! Pero soy nuevo en este mundo del backend.
Danniel Sequera
Existe alguna forma de integrar Rails con React o algún Framework/Librería SPA ?
Agustina Corvo
Si, claro. Por ejemplo se puede tener una aplicación con front en React que consume una API construida en Rails. Github está construida sobre RoR y del lado del frontend utilizan React.
David Campos
Assets
Son insumos que las respuestas HTML (y otras) necesitan para operar funcional y estéticamente de forma correcta en el cliente. Archivos CSS, JS, imágenes, fuentes, etc.
Cargar estos assets en una aplicación web puede llegar a ser un problema si no se manejan de forma correcta.
Se necesita un sistema de optimización, para que no tarde tanto el cargar los assets, también utilizar sistemas de caching para tener cierta información precargada, otra técnica es la ofuscación, para comprimir y cifrar los assets y por último sistemas de seguridad. Todo esto se puede gestionar desde Rails.
El sistema de assets en Rails se base en el Asset Pipeline
Asset Pipelin
El Asset Pipeline se puede pensar como una banda que va llevando a los assets por ciertas fases para llegar al paquete final que se enviará a la web.
Transformer
En esta etapa se transforman los archivos a los formatos que soporta la web, es decir. Por ejemplo, si se trabaja con SASS estos archivos pasarán por un transformador para convertirlos en CSS. Esto con todos los dialectos o meta lenguajes con los que se este trabajando
Concatenator
Lo que sucede aquí es que, por ejemplo, todos los archivos CSS se unan en un solo archivo y esto permite que solo se haga una petición para enviar todos los estilos de la aplicación.
Compressor
Lo que el compresor es minificar los archivos que obtuvo del Concatenator para que sean lo más ligeros posible.
Fingerprinter
El fingerprinter le da un ID único al paquete para indicarle al sistema de caching las versiones de assets y así sepa cuando es necesario reemplazar la información en caché.
Layouts
Por lo general, las vistas de las aplicaciones web están divididas en secciones, como una barra de navegación, la sección del contenido principal y el footer, esto es un layout.
El Asset Pipeline se enlaza al layout al principio, en algo llamado Sporckets manifest. Aquí se referencia la estructura del Asset Pipeline y se empiezan a agrupar los assets necesarios para esa página en específico.
Si la página se vuelve muy compleja se puede dividir en parciales para que no se tan complicado manejarla.
Con ayuda de el método yield, proporcionado por Rails, se manejará el contenido principal de las plantillas, para que solo este cambie y el resto de la página siga como en la plantilla.
Webpacker
Webpacker, recientemente añadido a Rails, es un componente que utiliza internamente Webpack. Con el propósito de tener un desarrollo de aplicaciones tanto tradicional como moderno.
Así como para gestionar las librerías de Ruby se utiliza el Gemfile, para el JS de la aplicación se utiliza YARN. Con YARN se gestionarán todas las librerías de JavaScript, asumiendo que los archivos JS también se pueden ver como assets.
Sofía González Chavira
ASSETS Insumos para que la página tenga mejor interacción visual. Un asset puede ser reglas de estilo (CSS), Scripts de JS, imágenes, etc.
Requieren:
Todo esto viene incluido en el sistema de Rails. Se basa en un componente denomidado Asset Pipeline.
Asset Pipeline Atraviesa ciertas fases, cada fase es un estado del asset hasta llegar al producto final.
LAYOUTS Layout es el que dice la posición de los elementos del HTML. Antes de comenzar este proceso realiza un otro proceso llamado Sprockets manifest. De esta forma, usando un comando de Rails, podemos referenciar toda la estructura del Asset Pipeline y permite consolidar los assets de esa página específica.
En caso de ser una página muy compleja, es posible utilizar parciales. Los parciales extraen pequeños pedazos de código de la página y se pasan a otro archivo. Refactorizando y simplificando la página.
WEBPACK Rails permite las arquitecturas basadas en JS. Esto usa Webpacker que utiliza el componente Webpack. Esto permite la opción entre un desarrollo de web moderno o tradicional. Yarn Yarn es el gemfile de webpacker. Es el gestor de paquetes para gestionar librerias JS.
Se aceptan correcciones ☹
Cristian Pisco Intriago
Optimización: para que los assets no tomen tanto tiempo a la hora de ser cargados en la pagina web.
Caching: Evidenciar patrones de pre carga, donde no vas a tener que pedir siempre la misma información.
Ofuscacion: cargar un sistema en donde sea seguros los assets y se pueda comprimir.
Seguridad: utilizar fingerprints que permite acceder a los assets evitando ambiguedades entre ellos.
Daniel Morán
excelente
Esteban Ramos Fernández
genial que potencien el front embebido..
Jean Nuñez
Los assets de caching para guardar los datos o fuentes que se repiten para la carga mas rapida
Gabriel Vladimir Valdivieso Vanegas
El Asset Pipeline es parecido a webpack?
Johan Tique
ProfesorHola Gabriel, respuesa rápida si, es parecido
Respuesta larga: logran similares objetivos pero bajo caminos bastante distintos.
En términos generales tanto el asset pipeline (en función del Sprockets) y Webpack pueden hacer lo siguiente:
Se debe tener en cuenta que el concepto y la tecnología de Sprockets, tiene a esta fecha 13 años de ser construida, fue novedoso y ahorró un montón de dolores de cabeza... Sprockets se lleva muy bien con los assets que las gemas del proyecto puedan introducir, sirve muy bien cuando manejas multiples layouts, sirve para independizar de forma clara tus CSS y JS, entre muchos otros tipos de assets...
Sprockets y Webpack pueden convivir sin ningún problema en el mismo proyecto, puedes definir roles bien específicos para cada uno:
Lo interesante con Webpack, es la evolución que este ha tenido asociada a la gestión de dependencias y la adopción del concepto de encapsulamiento y módulos JS en varias implementaciones (CommonJS, AMD, ES, entre otros) que viene muy bien con las arquitecturas modernas de desarrollo en Front.
Siempre será una desición personal, pero es bueno entender las diferencias y ventajas de cada uno.
Jean Nuñez
waaaao rails+yarn+webpacker
Jean Nuñez
Assets insumos, como css,js,imgy fonts para las vistas de la aplicacion
Marco Evair Macollunco Carquin
muy poderoso
Jose Ramos
Genial!