diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-23 11:46:57 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-23 11:47:42 -0700 |
commit | 7422f44364f9cade4002fae2df4bb40da945202d (patch) | |
tree | b204c9754382551a9b679c6a341d9a49d2017656 | |
parent | e944b296a90825c8aaee23a324db6e34521c7e74 (diff) | |
download | rails-7422f44364f9cade4002fae2df4bb40da945202d.tar.gz rails-7422f44364f9cade4002fae2df4bb40da945202d.tar.bz2 rails-7422f44364f9cade4002fae2df4bb40da945202d.zip |
chdir before globbing so that we don't need to escape directory names.
fixes #5521
-rw-r--r-- | railties/lib/rails/paths.rb | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/railties/lib/rails/paths.rb b/railties/lib/rails/paths.rb index b37421c09c..4ac3d88dc2 100644 --- a/railties/lib/rails/paths.rb +++ b/railties/lib/rails/paths.rb @@ -157,7 +157,25 @@ module Rails 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 @@ module Rails 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 |