49 votes

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

Je souhaite que Rails 3.1 récupère davantage de mes actifs pour la précompilation. En particulier, l'outil par défaut de compilation des fichiers n'ajoute pas les éléments suivants .js des fichiers de vendor/assets/javascripts . Je peux simplement ajouter les actifs à la config.assets.precompile mais cela semble ennuyeux. Je ne veux pas me référer à eux dans la rubrique application.js manifeste, car je ne veux pas qu'ils soient inclus dans toutes les pages.

En résumé, tout moyen de demander que tous les .js fichiers trouvés dans vendor/assets/javascripts sont précompilés par rake assets:precompile mais sans les inclure dans toutes les pages ?

70voto

pat Points 10326

config.assets.precompile accepte les expressions régulières et la correspondance avec les caractères génériques. tous js sont compilés, sans spécifier chaque fichier par son nom, quelque chose comme ceci devrait faire l'affaire :

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

2voto

Piotr Kuczynski Points 111

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 _)

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
}

0voto

Odee Odum Points 160
# Precompile *all* assets, except those that start with underscore
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/

Référence des 55 minutes Blog pour l'explication complète.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X