为什么我会从以下网址获取空文件清单:
files = FileList.new("#{DEPLOYMENT_PATH}\**\*")
DEPLOYMENT_PATH是\\myserver\anndsomepath
如何从这样的服务器获取文件列表?这是Ruby / Rake的问题吗?
更新:
我试过了:
files = FileList.new("#{DEPLOYMENT_PATH}\\**\\*")
files = Dir.glob("#{DEPLOYMENT_PATH}\\**\\*")
files = Dir.glob("#{DEPLOYMENT_PATH}\**\*")
更新:重新启动:如果我将服务器设置为:
,则有效 //myserver/andsomepath
并获取这样的文件:
files = FileList.new("#{DEPLOYMENT_PATH}/**/*")
答案 0 :(得分:2)
红宝石'在处理文件路径时,File.join
旨在成为您的帮助者,通过以独立于系统的方式构建它们:
File.join('a','b','c')
=> "a/b/c"
所以:
DEPLOYMENT_PATH = File.join('', 'myserver', 'andsomepath')
=> "/myserver/andsomepath"
Ruby通过感知操作系统来确定文件路径分隔符,并且应该自动提供正确的值。在Windows XP,Linux和Mac OS上,它是:
File::SEPARATOR
=> "/"
File.join(DEPLOYMENT_PATH, '**', '*')
=> "/myserver/andsomepath/**/*"
虽然您可以忽略助手,但它可以让您的生活更轻松。因为您正在对服务器工作,所以您可能希望查看File::ALT_SEPARATOR
,或者只是重新分配到SEPARATOR
并忽略该警告,让Ruby完成剩下的工作。
答案 1 :(得分:1)
如果你这样做会怎样?
Dir.glob("#{DEPLOYMENT_PATH}\**\*")
编辑:我认为Ruby更喜欢你做Unix风格的斜杠,即使你在Windows上也是如此。我假设理由是,相同的代码在Unix和Windows上工作更好,即使它在Windows上看起来很奇怪。
tl; dr :如果它适用于/
但不适用于\
,那么请使用有效的功能。
答案 2 :(得分:0)
由于:
> "\*" == "*"
=> true
改为使用"\\**\\*"
。