Если вам не нужно выдавать ошибку, вы можете использовать reopen
, я думаю, что-то вроде:
file = file.reopen(file.path, "r")
Я не могу найти способ иначеубедитесь, что нет потока записи, но вот что-то вроде хака, которое будет работать.Хотя мне не нравится использование исключений в ожидаемом пути, вы можете использовать close_write
:
begin
file.close_write
# you could actually raise an exception here if you want
# since getting here means the file was originally opened for writing
rescue IOError
# This error will be raised if the file was not opened for
# writing, so this is actually the path we want
end