#Barcamp : Les Assets Ruby on Rails

Asset Pipeline

L’asset pipeline est un outil qui concatène et minifie (compresse) les ressources CSS et JavaScript. Il nous permet aussi d’écrire nos assets avec d’autres langages ou pré-processeurs comme ERB, Sass ou CoffeeScript. En Ruby on Rails, Il est gérer par la gem sprockets-rails, dont le code a été extrait du cœur du framework dans la version 4.

Les assets sont placés dans le répertoire /app/assets. En production, Rails les précompile et les place dans le répertoire /public/assets.

Inclusion des assets

Lorsqu’on génère un contrôleur (ou un scaffold), rails crée automatiquement des fichiers CSS et JS (ou SCSS et Coffee, si les gems correspondantes sont installées). Par exemple, si on crée le contrôleur elements_controller.rb, les fichiers app/assets/stylesheets/elements.scss et app/assets/javascripts/elements.js vont être créés. Ces fichiers sont inclus dans l’application si l’instruction require tree . est présente dans le fichier application.css.

Mais il est également possible d’inclure seulement les fichiers d’assets spécifiques au contrôleur courant en utilisant les lignes suivantes dans le layout :

Organisation des assets

Les répertoires images, javascripts et stylesheets présents dans app/assets, lib/assets et vendor/assets sont gérés par l’assets pipeline. Il est possible d’ajouter des chemins au pipeline dans le fichier config/application.rb. Par exemple :

Manifest

Les fichiers app/assets/stylesheets/application.css et app/assets/javascript/application.js sont des fichiers manifest qui déterminent quelles assets inclure et servir.

Un fichier manifest ressemble à ceci :

Ici, les fichiers jquery.js et jquery_ujs présents dans un des chemins connus par l’asset pipeline sont inclus. La directive require_tree inclus tous les fichiers présents dans le répertoire courant, alors que require_directory inclus les fichiers présents dans le répertoire spécifié.

Pour exclure un fichier présent dans le répertoire courant après un require_tree, il faut utiliser la directive stub.

À noter que les assets sont inclus dans l’ordre spécifié par le manifest. Par contre, il n’y a pas d’ordre spécifique d’inclusion des assets avec le require_tree ou le require_directory. Il faut donc inclure un fichier avant le require_tree si on veut qu’il soit inclus le premier (il ne sera alors pas inclus une seconde fois).

On peut utiliser autant de fichiers manifest que le souhaite. Pour cela, il faut les ajouter à la précompilation dans le fichier /config/initializers/assets.rb :

Helpers d’assets

Il existe plusieurs helpers qui nous permettent d’inclure les assets :

Sources :

Lectures complémentaires :

 

Une réflexion au sujet de « #Barcamp : Les Assets Ruby on Rails »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.