Permalink
Browse files

chdir before globbing so that we don't need to escape directory names.

fixes #5521
  • Loading branch information...
1 parent 0382e44 commit eb0d8ee4fd3e369e88fd77492d01b499d9550162 @tenderlove tenderlove committed Mar 23, 2012
Showing with 30 additions and 1 deletion.
  1. +30 −1 railties/lib/rails/paths.rb
View
31 railties/lib/rails/paths.rb
@@ -157,7 +157,25 @@ def expanded
path = File.expand_path(p, @root.path)
if @glob
- result.concat Dir[File.join(path, @glob)].sort
+ if File.directory? path
+ result.concat expand_dir(path, @glob)
+ else
+ # FIXME: I think we can remove this branch, but I'm not sure.
+ # Say the filesystem has this file:
+ #
+ # /tmp/foobar
+ #
+ # and someone adds this path:
+ #
+ # /tmp/foo
+ #
+ # with a glob of "*", then this function will return
+ #
+ # /tmp/foobar
+ #
+ # We need to figure out if that is desired behavior.
+ result.concat expand_file(path, @glob)
+ end
else
result << path
end
@@ -177,6 +195,17 @@ def existent_directories
end
alias to_a expanded
+
+ private
+ def expand_file(path, glob)
+ Dir[File.join(path, glob)].sort
+ end
+
+ def expand_dir(path, glob)
+ Dir.chdir(path) do
+ Dir.glob(@glob).map { |file| File.join path, file }.sort
+ end
+ end
end
end
end

0 comments on commit eb0d8ee

Please sign in to comment.