Я пытаюсь открыть tmpfile в системе $ EDITOR, записать в него, а затем прочитать на выходе. Я могу заставить его работать, но мне интересно, почему вызов file.read возвращает пустую строку (когда файл имеет контент)Ruby: Чтение из файла, написанного системным процессом
В принципе, я хотел бы знать правильный способ чтения файла, как только он был написано на.
require 'tempfile'
file = Tempfile.new("note")
system("$EDITOR #{file.path}")
file.rewind
puts file.read # this puts out an empty string "" .. why?
puts IO.read(file.path) # this puts out the contents of the file
Да, я буду работать в этом блоке, чтобы обеспечить Nuke файл один раз используется;)
я бегу это на рубин 2.2.2 и с помощью Vim.
Какую версию рубина вы используете, и какой редактор вы использовали для редактирования содержимого. –
Я прокомментировал - какая разница, по вашему мнению, это делает? –
Было бы полезно, если бы вы использовали что-то другое, кроме vim, потому что вызов 'system' завершился бы до того, как сам редактор будет. Мое первое предположение заключалось в том, что вы пытались прочитать файл до того, как редактор написал все байт. Я думаю, что нашел свое исправление, хотя, пожалуйста, см. Мой ответ ниже. –