Запись Ruby в файл в памяти (на самом деле не запись в него)

Итак, у меня есть эта программа, которая работает с передачей строки (эта строка является путем к файлу, который она должна прочитать)

Теперь у меня есть метод, который должен открыть этот файл. измените текст с помощью Gsub и затем снова выведите этот файл (исходный файл не может быть отредактирован), но мне нужно в конечном итоге вывести этот измененный файл

это метод, который я использую, чтобы изменить мой файл (упрощенно)

def self.changeFile(myfile)
myfile = @path

doc = File.open(myfile)
text = doc.read

text.gsub!("change" , "changed")

return text

проблема в том, что я получаю весь файл в виде возвращаемой строки. Мои другие методы работают с вводом "строки" пути

Итак, мой вопрос: могу ли я в любом случае записать свой текст в файл, который я изменил в памяти, так что без фактического изменения исходного файла?

Я думал об использовании "Tempfile" или "StringIO", но я не знаю, правильно ли это делать

Вся помощь приветствуется

1 ответ

Вы можете использовать храм для этого:

def self.changeFile(myfile)
  myfile = @path
  tempfile = Tempfile.new("changed")
  tempfile << File.open(myfile).read.gsub("change" , "changed")
  tempfile.close
  tempfile.path
end
Другие вопросы по тегам