Pourquoi ne pouvons-nous pas précompiler des actifs dans un environnement de développement? Je sais que les pignons compilent essentiellement tous les actifs.
Lorsque nous allons dans un environnement de production, nous exécutons la commande:
rake assets:precompile
Mais dans l'environnement de développement, nous ne pouvons rien faire pour qu'il se compile. Quelles sont les différences de comportement de la compilation des actifs dans les deux environnements?
Chaque application Web contient des images et des fichiers CSS pour la rendre jolie, ainsi que des fichiers JavaScript pour gérer l'interaction et le comportement de l'utilisateur. Si les ressources se chargent plus rapidement, l'application Web devrait mieux fonctionner. Il existe de nombreuses stratégies pour accélérer le chargement des ressources, telles que la réduction, la compression (gzipping), la mise en cache, etc.
En mode développement, les actifs sont servis sous forme de fichiers séparés dans l'ordre où ils sont spécifiés dans le fichier manifeste.
Ce manifeste app/assets/javascripts/application.js:
//= require core
//= require projects
//= require tickets
Dans l'environnement de production, Sprockets utilise le schéma d'empreinte digitale décrit ci-dessus. Par défaut Rails suppose que les actifs ont été précompilés et seront servis comme actifs statiques par votre serveur Web.
Pendant la phase de précompilation, un MD5 est généré à partir du contenu des fichiers compilés et inséré dans les noms de fichiers lors de leur écriture sur le disque. Ces noms d'empreintes digitales sont utilisés par les assistants Rails à la place du nom du manifeste).
Par exemple ceci:
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application" %>
génère quelque chose comme ceci:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
Remarque: avec le pipeline d'actifs, les options: cache et: concat ne sont plus utilisées, supprimez ces options des javascript_include_tag et stylesheet_link_tag.
Le comportement des empreintes digitales est contrôlé par l'option d'initialisation config.assets.digest (qui vaut par défaut true pour la production et false pour tout le reste).
Si vous souhaitez précompiler des actifs dans un environnement de développement, vous pouvez utiliser cette commande:
Rails_ENV=development bundle exec rake assets:precompile
Vous pouvez précompiler les actifs dans l'environnement de développement par défaut à l'aide de config/development.rb
config.assets.debug = false
Dans la plupart des cas, vous n'en avez pas besoin car votre processus de développement sera plus difficile.