La canalización de activos es una característica muy poderosa que ofrece Rails para resolver una amplia gama de problemas relacionados con el diseño web.
Minimiza el trabajo manual al compilar y procesar todas las hojas de estilo, archivos javascript, imágenes, etc. siempre que sea posible y está preparado para su uso. La canalización de activos puede mejorar la calidad de la aplicación en términos de rendimiento y flexibilidad.
La cartera de activos:
La canalización de activos proporciona un marco para concatenar y minimizar o comprimir activos de JavaScript y CSS. También agrega la capacidad de escribir estos activos en otros lenguajes y preprocesadores como CoffeeScript, Sass y ERB.
La canalización de activos técnicamente ya no es una característica central de Rails 4, se ha extraído del marco y se ha convertido en la joya de sprockets-rails.
La canalización de activos está habilitada de forma predeterminada.
Podemos deshabilitar la canalización de activos mientras creamos una nueva aplicación pasando la opción –skip-sprockets.
nuevo nombre de aplicación de rieles –skip-sprockets
Rails 4 agrega automáticamente los rieles sass, los rieles de café y las gemas más feas a su Gemfile, que Sprockets utiliza para la compresión de activos:
joya 'sass-rails'
gema 'fea'
joya 'rieles de café'
El uso de la opción –skip-sprockets evitará que Rails 4 agregue sass-rails y uglifier a Gemfile, por lo que si luego desea habilitar la canalización de activos, tendrá que agregar esas gemas a su Gemfile. Además, la creación de una aplicación con la opción –skip-sprockets generará un archivo config/application.rb ligeramente diferente, con una declaración require para el raíl de los sprockets que está comentada. Tendrá que eliminar el operador de comentarios en esa línea para luego habilitar la canalización de activos:
# requiere “piñones/raíles”
Para configurar los métodos de compresión de activos, establezca las opciones de configuración apropiadas en production.rb: config.assets.css_compressor para su CSS y config.assets.js_compressor para su JavaScript:
config.assets.css_compressor =: yui
config.assets.js_compressor =: feo
Cómo utilizar la canalización de activos:
En versiones anteriores de Rails, todos los recursos estaban ubicados en subdirectorios públicos como imágenes, javascripts y hojas de estilo. Con la canalización de activos, la ubicación preferida para estos activos es ahora el directorio app/assets. Los archivos de este directorio son servidos por el middleware Sprockets.
Los activos aún se pueden colocar en la jerarquía pública. La aplicación o el servidor web entregará todos los recursos en público como archivos estáticos cuando config.serve_static_files esté configurado en verdadero. Debe utilizar app/assets para archivos que deben someterse a algún procesamiento previo antes de ser entregados.
En producción, Rails precompila estos archivos en public/assets de forma predeterminada. Luego, el servidor web sirve las copias precompiladas como activos estáticos. Los archivos en app/assets nunca se entregan directamente en producción.
Activos específicos del controlador:
Cuando genera un andamio o un controlador, Rails también genera un archivo JavaScript (o un archivo CoffeeScript si la gema coffee-rails está en el Gemfile) y un archivo de hoja de estilo en cascada (o un archivo SCSS si sass-rails está en el Gemfile) para ese controlador. Además, al generar un scaffold, Rails genera el archivo scaffolds.css (o scaffolds.css.scss si sass-rails está en el Gemfile).
Por ejemplo, si genera un ProjectsController, Rails también agregará un nuevo archivo en app/assets/javascripts/projects.js.coffee y otro en app/assets/stylesheets/projects.css.scss. De forma predeterminada, estos archivos estarán listos para que su aplicación los utilice inmediatamente utilizando la directiva require_tree. Consulte Archivos de manifiesto y directivas para obtener más detalles sobre require_tree.
También puede optar por incluir hojas de estilo específicas del controlador y archivos JavaScript solo en sus respectivos controladores usando lo siguiente:
<%= javascript_include_tag params[:controlador] %> o <%= stylesheet_link_tag params[:controlador] %>
Activos de precompilación:
Rails viene con una tarea rake para compilar los manifiestos de activos y otros archivos en proceso.
Los activos compilados se escriben en la ubicación especificada en config.assets.prefix. De forma predeterminada, este es el directorio /assets.
Puede llamar a esta tarea en el servidor durante la implementación para crear versiones compiladas de sus activos directamente en el servidor. Consulte la siguiente sección para obtener información sobre la compilación local.
La tarea del rastrillo es:
$ RAILS_ENV=activos de contenedor/rastrillo de producción:precompilar
Capistrano (v2.15.1 y superior) incluye una receta para manejar esto en la implementación. Agregue la siguiente línea a Capfile:
cargar 'implementar/activos'
Esto vincula la carpeta especificada en config.assets.prefix ashared/assets. Si ya utiliza esta carpeta compartida, deberá escribir su propia tarea de implementación.
Es importante que esta carpeta se comparta entre implementaciones para que las páginas almacenadas en caché de forma remota que hacen referencia a los activos compilados antiguos sigan funcionando durante la vida útil de la página almacenada en caché.
Compilación en vivo:
En algunas circunstancias, es posible que deseemos utilizar la compilación en vivo. En este modo, todas las solicitudes de activos en proceso son manejadas directamente por Sprockets.
Para habilitar esta opción, establezca:
config.assets.compile = verdadero
En la primera solicitud, los activos se compilan y almacenan en caché como se describe en el desarrollo anterior, y los nombres de manifiesto utilizados en los asistentes se modifican para incluir el hash MD5.
Sprockets también establece el encabezado HTTP Cache-Control en max-age=31536000. Esto indica a todos los cachés entre su servidor y el navegador del cliente que este contenido (el archivo servido) se puede almacenar en caché durante 1 año. El efecto de esto es reducir la cantidad de solicitudes de este activo desde su servidor; el activo tiene muchas posibilidades de estar en la caché del navegador local o en alguna caché intermedia.
Este modo utiliza más memoria, tiene un rendimiento peor que el predeterminado y no se recomienda.
Si está implementando una aplicación de producción en un sistema sin tiempos de ejecución de JavaScript preexistentes, es posible que desee agregar uno a su Gemfile: grupo: producción.
gema 'therubyracer'
fin
Railscarma ha estado implementando Ruby on Rails desde sus etapas iniciales para el desarrollo, la capacitación, la implementación y la contribución a la comunidad Rails y brindando la mejor Servicios de desarrollo de Ruby on Rails. RailsCarma proporciona servicios Ruby on Rails de extremo a extremo que incluyen consultoría, arquitectura, construcción, gestión y extensión a empresas de todo el mundo. También puedes contratar desarrolladores de Ruby on Rails con un proceso de contratación sencillo.Contáctenos para saber mas.
Leer más :
- Una forma sencilla de aumentar el rendimiento de su aplicación Rails
-
Los conceptos básicos de la creación y el uso de módulos en Rails
-
¿Qué es la API REST?