web-dev-qa-db-fra.com

Rails 3.1 précompilation d'actifs - inclure tous les fichiers javascript

Je veux que Rails 3.1 récupère plus de mes actifs pour la précompilation. En particulier, le matcher par défaut pour la compilation des fichiers n'ajoute pas .js fichiers de vendor/assets/javascripts. Je peux simplement ajouter les actifs au config.assets.precompile liste, mais cela semble ennuyeux. Je ne veux pas y faire référence dans le application.js manifeste, car je ne veux pas qu'ils soient inclus dans toutes les pages.

En résumé, toute façon de demander à tous les .js fichiers trouvés dans vendor/assets/javascripts être précompilé par rake assets:precompile, mais sans les inclure dans toutes les pages?

48
Peter

config.assets.precompile accepte les expressions régulières et les correspondances génériques - afin de garantir que les fichiers tous js sont compilés, sans spécifier chacun par leur nom, quelque chose comme ceci devrait faire l'affaire:

config.assets.precompile << '*.js'
69
pat

J'ai modifié l'exemple donné dans paramètre Rails config.assets.precompile pour traiter tous les fichiers CSS et JS dans app/assets et voici ma version, qui prend tous les actifs de/app et/vendor sauf les partiels (à partir de de _)

config.assets.precompile << Proc.new { |path|
  if path =~ /\.(css|js)\z/
    full_path = Rails.application.assets.resolve(path).to_path
    app_assets_path = Rails.root.join('app', 'assets').to_path
    vendor_assets_path = Rails.root.join('vendor', 'assets').to_path

    if ((full_path.starts_with? app_assets_path) || (full_path.starts_with? vendor_assets_path)) && (!path.starts_with? '_')
      puts "\t" + full_path.slice(Rails.root.to_path.size..-1)
      true
    else
      false
    end
  else
    false
  end
}
2
Piotr Kuczynski
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/

Référencez les 55 minutes Blog pour l'explication complète.

Cela précompilera tous les actifs, pas seulement JavaScript (.js, .coffee, .swf, .css, .scss)

0
Ode