2013-11-06 2 views
1

У меня есть приложение rails, мне нужно видеть файлы в любой папке. Пример У меня есть приложение на C: \ rails_app и в контроллере записи этого код:Как увидеть список файлов в Rails из любой папки, внешний Rails.root - Windows

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

и не вижу файл всего каталога в рельсах консоли работе отлично. У меня вопрос: Как увидеть файлы из каталога non rails? Спасибо
--- после некоторого ответа
Неисправность не используется Класс Dir. Проблема в том, что Rails видит только собственный корневой каталог, и я не могу изменить каталог на другой диск или папку в контроллере rails.

ответ

0

Я думаю, что может случиться с вами, что \escapes next character. Попробуйте:

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

или:

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

Извините, я использую второй код. И проблема не в использовании Dir.glob – Vladimir

1

Вы можете использовать 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"] 
+0

спасибо, я знаю, как использовать класс Dir – Vladimir

0

Как juanpastas упоминает, что это может быть проблемой спасения. Основная проблема, однако, заключается в том, что путь не является строкой! Путь представляет собой путь (объект) и может быть наилучшим образом рассматриваться как таковые:

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

Или стенография:

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

Кроме того, рельсы (и другие приложения) обернули это в Pathname, например, Rails.root, используйте так:

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