Si j'utilise //=require_tree .
dans application.css, existe-t-il un moyen d'exclure des fichiers particuliers autres que le recours à //=require_directory
et à une arborescence?
Peut-être quelque chose comme //= require_tree ., {except: 'something'}
Ceci est possible avec la nouvelle directive stub
de Sprocket, disponible dans les versions 2.2.0 et suivantes de Sprockets. Cependant, Rails 3.2 n’utilisera jamais que Sprockets v2.1.3 qui n’a pas cette fonctionnalité. À l’heure actuelle, Edge Rails actuel est doté de la directive stub
et sera officiellement dans Rails 4.0 et versions ultérieures.
Usage:
//= require jquery
//= require_tree .
//= stub unwanted_js
Les directives stub
ne peuvent pas être remplacées par les directives require
ou include
suivantes.
Si vous souhaitez utiliser la directive stub
dans votre projet Rails 3.2, vous devrez basculer vers Edge Rails ou relier votre gem Rails avec sa dépendance Sprockets modifiée à la version 2.2.0.
Depuis la publication de Rails 3.2.9, le système supporte le verrouillage des pignons vers la version 2.2.x afin que nous puissions utiliser la directive //= stub
utilisée par les derniers pignons.
//= stub unwanted_js
http://weblog.rubyonrails.org/2012/11/12/ann-Rails-3-2-9-has-been-released/
Donc, pour l'utiliser, il suffit de passer à Rails 3.2.9
NB: Cette réponse est maintenant obsolète, avec une mise à jour pour Sprockets ayant cette fonctionnalité. Voir la réponse ci-dessous.
===
Ce n'est pas possible avec les directives Sprockets actuelles, mais cela semble être une fonctionnalité pratique.
L'autre façon de lister manuellement chaque fichier que vous voulez.
Peut-être pourriez-vous archiver ceci sous forme de demande de fonctionnalité sur le dépôt Sprockets ? :-)
Essayez de mieux le https://github.com/QubitProducts/miniMerge
Il prend en charge non seulement JS et est en mode de base compatible pignons.
Vous pouvez exclure non seulement les niveaux de fichier, mais également les bloquer ou même les lignes.
Gestion complète des dépendances avec plusieurs bases sources.
J'ai utilisé des pignons dans le passé et celui-ci est meilleur, je l'utilise aussi pour CSS.
Le patch de singe suivant résout ce problème pour moi:
module Sprockets
class DirectiveProcessor
# support for: require_tree . exclude: "", "some_other"
def process_require_tree_directive(path = ".", *args)
if relative?(path)
root = pathname.dirname.join(path).expand_path
unless (stats = stat(root)) && stats.directory?
raise ArgumentError, "require_tree argument must be a directory"
end
exclude = args.shift == 'exclude:' ? args.map {|arg| arg.sub(/,$/, '')} : []
context.depend_on(root)
each_entry(root) do |pathname|
if pathname.to_s == self.file or exclude.include?(pathname.basename(pathname.extname).to_s)
next
elsif stat(pathname).directory?
context.depend_on(pathname)
elsif context.asset_requirable?(pathname)
context.require_asset(pathname)
end
end
else
# The path must be relative and start with a `./`.
raise ArgumentError, "require_tree argument must be a relative path"
end
end
end
end