En supposant que FileList
ici est la classe de rake FileList
alors le problème est dans Dir
classe sous-jacente de Ruby (qui est utilisé par FileList
) pas les fichiers correspondant commençant par .
pour le caractère générique *
. La partie pertinente de rake.rb est
# Add matching glob patterns.
def add_matching(pattern)
Dir[pattern].each do |fn|
self << fn unless exclude?(fn)
end
end
Voici un bidouille horrible qui l'emporte sur add_matching
pour inclure également les fichiers commençant par .
Espérons que quelqu'un d'autre sera le long de proposer une solution plus élégante.
class Rake::FileList
def add_matching(pattern)
files = Dir[pattern]
# ugly hack to include files starting with . on Windows
if RUBY_PLATFORM =~ /mswin/
parts = File.split(pattern)
# if filename portion of the pattern starts with * also
# include the files matching '.' + the same pattern
if parts.last[0] == ?*
files += Dir[File.join(parts[0...-1] << '.' + parts.last)]
end
end
files.each do |fn|
self << fn unless exclude?(fn)
end
end
end
Mise à jour: Je viens de tester cela sur Linux ici et les fichiers commençant par .
ne sont pas inclus non plus. par exemple. Si j'ai un répertoire /home/mikej/root
avec 2 sous-répertoires a
et b
où chacun contient first.template
et .other.template
puis
Rake::FileList.new('home/mikej/root/**/*.template')
=> ["/home/mikej/root/a/first.template", "/home/mikej/root/b/first.template"]
donc je vérifier le comportement sur Linux et vérifier qu'il n'y a pas quelque chose d'autre cause la différence de comportement.
quelle serait la "alternative"? –
Je n'ai pas trouvé d'autre moyen car les autres méthodes sur 'Dir' se comportent également de la même manière. Cependant, consultez la réponse mise à jour pour une solution de contournement. – mikej
@ Andrew Bullock s'il vous plaît voir la mise à jour que j'ai fait décrivant le résultat de mon test sur Linux car cela ne semble pas inclure le. fichiers - pourrait-il être une différence dans la version de Ruby sur les 2 plates-formes? Je suis sur 1.8.6 dans les deux cas. – mikej