Comment pouvez-vous accélérer le processus de précompilation du pipeline Rails Asset?
Capistrano a sa propre tâche intégrée «déployer / actifs». Il va automatiquement faire la tâche pour vous.
La différence entre votre propre tâche d’artisanat est qu’il ne charge que le groupe d’ assets
pour pré-comstackr les ressources, et non l’environnement entier.
cd /home/apps/APP_NAME/releases/20120708184757 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precomstack
https://gist.github.com/3072362
Si
sont modifiés, il va recomstackr les actifs. Sinon, il va ignorer le processus de compilation, gagner beaucoup de temps.
@import "compass";
directement. Il travaillera tous les deux quand vous
@import "compass";
ou @import "compass/typography/links/link-colors";
en SCSS.
Mais @import "compass/typography/links/link-colors";
est 9 fois plus rapide que @import "compass";
lorsque vous comstackz des actifs.
C’est parce que quand @import "compass";
, il comstack des ressources de compas entières. non seulement les link-colors
.
Dans SCSS, nous aimons utiliser partial
pour organiser nos actifs.
Mais seulement si vous avez besoin de partager des variables, ou s’il existe des dépendances nécessaires, sinon
//= require "reset" //= require "base" //= require "product"
est plus rapide que
@import "reset"; @import "base"; @import "product";
Lorsque nous utilisons le générateur Rails pour générer des contrôleurs. Rails générera également des actifs comme celui-ci
et monter des ressources dans application.js en utilisant ces techniques:
//= require_tree
Mais les actifs vides (sortie rien) qui ne contiennent que ces lignes:
# Place all the behaviors and hooks related to the matching controller here. # All this logic will automatically be available in application.js. # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
Il vous en coûtera environ 250 ms pour les comstackr. Si vous avez 10 ressources vides, ce sera 2,5 secondes.
Supprimez-les de votre projet ou montez-les individuellement dans application.js comme ceci:
//= require prodcuts //= require users //= require albums
css.scss
ou js.coffee
si nécessaire. custom.css
est custom.css.scss
Comstackr des fichiers CSS pur et JS pur est rapide (coût presque 0 ms). Mais comstackr .scss et .coffee coûte encore du temps.
vérifier les logs / production.log
Je viens d’écrire un bijou pour résoudre ce problème à l’intérieur de Rails, appelé turbo-sprockets-rails3 . Il accélère vos assets:precomstack
en recompilant uniquement les fichiers modifiés, et en compilant une seule fois pour générer tous les actifs.
Notez que j’essaie également de faire fusionner ce correctif dans Rails 4.0.0 et éventuellement Rails 3.2.9 (voir https://github.com/rails/sprockets-rails/pull/21 ). Mais pour l’instant, ce serait génial si vous pouviez m’aider à tester le joyau turbo-sprockets-rails3 , et dites- moi si vous avez des problèmes.
(2) éviter d’utiliser des partiels
En SCSS, nous aimons utiliser partiellement pour organiser nos actifs
Sur les derniers railsconf, on a introduit libsass.
Les choses vont probablement changer et réécrire en C, les partiels scss promettent d’être plus rapides