2016-12-20 7 views
0

Я использую Rails 5. Как мне получить полный путь к файлу назначения после копирования файла? Я сейчас делаю этоКак получить полный путь к скопированному файлу?

FileUtils.cp(file_path, dest_dir) 

К сожалению, результат этого звонка равен нулю. Есть ли вызов, который скажет мне полный путь назначения или что-то еще, что я могу сделать, чтобы получить этот путь назначения в переменной?

ответ

0

FileUtils является stdlib в Ruby. Если я правильно понял, то, что вы пытаетесь сделать, это получить путь к файлу, который вы скопировали.

Вы можете попробовать это с Rails, где dest_dir является путь:

Rails.root.join(dest_dir) 
+0

Я хочу полный путь к файлу назначения. Это дает только целевой каталог. –

+0

Вы можете использовать «Rails.root.join (dest_dir, file_path)», как показано ниже. – Mystieke

+0

Если я ничего не делаю, ответ taht неверен и то, что вы ahve даже не возвращает строку, возвращает другой объект. Выполнение того, что у вас есть в комментариях, возвращает «# ». Возвращает ли он правильный путь для вас или вы просто догадываетесь? –

0

Вы можете получить, что с:

filename=File.basename("file/some/where/filename.txt") 
=> "filename.txt" 

File.join("/dest/dir", filename) 
=> "/dest/dir/filename.txt" 
+0

Это не работает. Из моего вопроса, если dest_dir = "/ tmp" и file_path = "/Users/nataliab/myfile.txt", запуск FileUtils.cp (file_path, dest_dir) приводит к «/tmp/Users/nataliab/myfile.txt», который является файлом, который не существует после операции копирования. –

+0

Я подозреваю, что там происходит еще кое-что. cp не создает несуществующие папки для вас. Вам нужно будет сначала использовать FileUtils.mkdir_p по полному пути, который создает все недостающие папки. Учитывая, что вы можете написать/tmp. –

+0

В моем вопросе вы можете предположить, что «dest_dir» существует. Я пытаюсь получить полный путь к файлу после его копирования в «dest_dir», используя Ruby/Rails. Имеет ли это смысл? Я совершенно новый, и я думаю, что люди не понимают, о чем я прошу. –