我有 rails 应用程序,我需要查看任何文件夹中的文件。例如,我在 c:\rails_app 上有应用程序,并在控制器中编写以下代码:
@files = Dir.glob("Z:/*")
并且在 rails 控制台中看不到文件整个目录工作正常。我有一个问题:如何查看非 rails 目录中的文件?谢谢
---经过一些回答
问题不在使用目录类。Rails 只能看到自己的根目录并且我无法将目录更改为 Rails 控制器中的其他磁盘或文件夹的问题。
我有 rails 应用程序,我需要查看任何文件夹中的文件。例如,我在 c:\rails_app 上有应用程序,并在控制器中编写以下代码:
@files = Dir.glob("Z:/*")
并且在 rails 控制台中看不到文件整个目录工作正常。我有一个问题:如何查看非 rails 目录中的文件?谢谢
---经过一些回答
问题不在使用目录类。Rails 只能看到自己的根目录并且我无法将目录更改为 Rails 控制器中的其他磁盘或文件夹的问题。
您可以使用Dir#entries
或Dir#glob
来Dir#[]
获取任何文件夹中的列表。
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"]
The equivalent of ls
(list files) from the rails console is
Dir.entries(Dir.pwd)
e.g.
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"]
正如juanpastas提到的,这可能是一个逃避问题。然而,潜在的问题是路径不是字符串!路径是路径(对象),最好这样处理:
path = File.join("Z:", "*")
puts path
@files = Dir.glob(path)
或者,速记:
@files = Dir.glob(File.join("Z:", "*"))
此外,Rails(和其他应用程序)已将此路径名包装在 eg 中Rails.root
,使用如下:
@files = Rails.root.join("lib") #=> Z:\path\to\rails\app\lib.