web-dev-qa-db-fra.com

Confusion sur les actifs en râteau: nettoyage / nettoyage sur le pipeline des actifs dans rails

Quelqu'un pourrait-il m'expliquer ce que la commande rake assets:clean vraiment? Malheureusement, les guides Rails ne le mentionnent pas. Il y a aussi la commande rake assets:cleanup. Quelle est la différence?

De plus, quelqu'un pourrait-il me dire quand dois-je exécuter rake assets:precompile en production. Dois-je l'exécuter sur la console du serveur après avoir déployé tous mes fichiers d'application sur mon serveur de production? Ou dois-je precompile sur ma machine locale puis faire un déploiement de tous les fichiers?

Merci a tous

55
daniel

Remarque: Cette réponse est Rails 3 spécifique. Pour Rails 4 et versions ultérieures, consultez les autres réponses ici.

Si vous précompilez sur votre ordinateur local, vous pouvez valider ces actifs générés dans le référentiel et poursuivre le déploiement. Pas besoin de les compiler sur machine de production.

Mais cela introduit un problème: maintenant, lorsque vous modifiez des fichiers source (coffescript/scss), l'application ne reprendra pas les modifications, car elle servira à la place des fichiers précompilés. rake assets:clean supprime ces fichiers précompilés.

Dans mes projets, les actifs sont précompilés dans le cadre du déploiement. Capistrano le rend très facile.

De plus, je n'ai jamais entendu parler de rake assets:cleanup.

65
Sergio Tulentsev

Courir rake assets:clobber pour nettoyer les actifs. http://www.dixis.com/?p=735

53

La réponse de Sergio était complètement correcte dans Rails 3. rake assets:clean a supprimé tous les éléments qui avaient été préalablement précompilés dans le public/assets répertoire.

Dans Rails 4, vous exécutez rake assets:clobber pour faire la même chose.

Si vous exécutez rake assets:precompile avec la configuration suivante (activée par défaut dans le transfert et la production):

# config/environments/production.rb
config.assets.digest = true

Vos ressources compilées sont horodatées. Cela signifie que vous pouvez compiler vos nouveaux actifs tout en laissant les anciens actifs en place. Vous voulez généralement le faire en production afin que votre site Web accède toujours aux anciens fichiers pendant que vous exécutez precompile pour créer vos nouveaux fichiers (car vous avez ajouté de nouveaux css/javascript). Vous voulez maintenant vous débarrasser des anciens fichiers qui ne sont plus utilisés. Le clean il supprime les anciennes versions des actifs précompilés tout en laissant les nouveaux actifs en place.

24
grouchomc

rake assets:clean supprime les actifs compilés. Il est géré par cap deploy:assets:clean pour supprimer les actifs compilés, généralement d'un serveur distant.

cap deploy:clean supprime les anciennes versions, généralement d'un serveur distant. Ce n'est pas rake assets:clean

râteau! = casquette

7
paul.belt

rake assets:clean est maintenant géré par cap deploy:cleanup_assets. Ajouter require 'capistrano/Rails/assets' à votre Capfile et vous obtenez cette tâche de cap. Ma version capistrano est la v3.2.1.

1
dduft