如何从任何文件夹,外部Rails.root - Windows中查看Rails中的文件列表

问题描述 投票:2回答:4

我有rails应用程序,我需要在任何文件夹中查看文件。示例我在c:\ rails_app上有应用程序,并在控制器中编写此代码:

@files = Dir.glob("Z:/*")

并且看不到rails控制台中的文件整个目录工作正常。我有疑问:如何从非rails目录中查看文件?谢谢 ---经过一番回答 问题未使用Dir类。 Rails只看到自己的根目录的问题,我不能将dir更改为rails控制器中的其他磁盘或文件夹。

ruby-on-rails ruby dir
4个回答
1
投票

您可以使用Dir#entriesDir#globDir#[]获取任何文件夹中的列表。

Dir.entries('/Users/ccashwell/.vim/')
=> [".",
 "..",
 ".git",
 ".gitignore",
 ".gitmodules",
 ".netrwhist",
 "ackrc",
 "after",
 "autoload",
 "bundle",
 "init",
 "LICENSE",
 "README.md",
 "snippets",
 "syntax",
 "vimrc"]

Dir.glob('/Users/ccashwell/.vim/*')
=> ["/Users/ccashwell/.vim/ackrc",
 "/Users/ccashwell/.vim/after",
 "/Users/ccashwell/.vim/autoload",
 "/Users/ccashwell/.vim/bundle",
 "/Users/ccashwell/.vim/init",
 "/Users/ccashwell/.vim/LICENSE",
 "/Users/ccashwell/.vim/README.md",
 "/Users/ccashwell/.vim/snippets",
 "/Users/ccashwell/.vim/syntax",
 "/Users/ccashwell/.vim/vimrc"]

Dir['/Users/ccashwell/.vim/*']
=> ["/Users/ccashwell/.vim/ackrc",
 "/Users/ccashwell/.vim/after",
 "/Users/ccashwell/.vim/autoload",
 "/Users/ccashwell/.vim/bundle",
 "/Users/ccashwell/.vim/init",
 "/Users/ccashwell/.vim/LICENSE",
 "/Users/ccashwell/.vim/README.md",
 "/Users/ccashwell/.vim/snippets",
 "/Users/ccashwell/.vim/syntax",
 "/Users/ccashwell/.vim/vimrc"]

0
投票

我想你可能会发生的事情是\ escapes next character。尝试:

@files = Dir.glob("Z:\\*")

要么:

@files = Dir.glob("Z:/*")

0
投票

正如juanpastas所提到的,这可能是一个逃避问题。然而,根本问题是路径不是字符串!路径是路径(对象),最好如此处理:

path = File.join("Z:", "*")
puts path
@files = Dir.glob(path)

或者,速记:

@files = Dir.glob(File.join("Z:", "*"))

此外,Rails(和其他应用程序)已将此Pathname包装在例如Rails.root,使用如下:

@files = Rails.root.join("lib") #=> Z:\path\to\rails\app\lib.

0
投票

相当于rails控制台的ls(列表文件)是

Dir.entries(Dir.pwd)

EG

Dir.entries(Dir.pwd)

# Returns this:

=> [".", "..", ".DS_Store", "app", ".ruby-version", "test", "bin", "config", "config.ru", 
 "storage", "README.md", "Rakefile", "public", ".gitignore", "package.json", "lib", "db",
 "Gemfile", "log", "Gemfile.lock", "init.R", ".git", "tmp", "vendor"]
© www.soinside.com 2019 - 2024. All rights reserved.