Ваш код имеет несколько ошибок. Вы когда-нибудь пытались выполнить сценарий?
Ваш сценарий заканчивается:
test.rb:7: unknown regexp options - fldr
test.rb:7: syntax error, unexpected end-of-input
F = open.(Dir.pwd, /data/folder /#{@file_name },w+)
Первое: Вам нужно определить строки с '
или "
:
file_name = gets
F = open.(Dir.pwd, "/data/folder/#{@file_name}","w+")
Некоторые другие ошибки:
- Вы используете
file_name
и позже @file_name
.
- Метод
open
относится к классу File
и нуждается в двух параметрах.
- Файл определяется как константа
F
. Я бы использовал переменную.
- Путь должен быть конкатенирован. Я бы использовал
File.join
.
- Вы не закрыли файл.
После всех этих изменений вы получаете:
file_name = gets
f = File.open(File.join(Dir.pwd, "/data/folder/#{file_name}"),"w+")
##
f.close
и ошибка:
test.rb:29:in `initialize': No such file or directory @ rb_sysopen - C:/Temp/data/folder/sdssd (Errno::ENOENT)
папка должна существовать, так что вы должны сначала создать его.
Теперь сценарий выглядит следующим образом:
require 'fileutils'
dirname = "data/folder"
file_name = gets.strip
FileUtils.mkdir_p(dirname) unless Dir.exists?(dirname)
f = File.open(File.join(Dir.pwd, dirname, file_name),"w+")
##fill the content
f.close
Не сдавайтесь меня голос .. Если госзакупках знать d ошибка означает, что это поможет. Не зная или не понимая или не зная ответа, как можно голосовать? оставить ppl, чтобы ответить на их вопросы, чтобы найти ответы –
Просьба выполнить код и посмотреть, работает ли он, если это не так, дать точное сообщение об ошибке или объяснить, почему наблюдаемое поведение неверно – Caridorc
'File.write (" # {Dir. pwd}/# {gets} ", 'Как это работает?')'. Я дам вам понять, как это работает. Вероятно, вы должны посмотреть [Класс файла] (http://ruby-doc.org/core/classes/File.html) и его родительский класс [IO class] (http://www.ruby-doc.org/core- 1.9.3/IO.html). После этого подумайте о домашнем задании и измените его, чтобы служить вашим целям. С уважением – radubogdan