Это предпочтительный подход в большинстве случаев:
File.open(yourfile, 'w') { |file| file.write("your text") }
Когда блок передается в File.open
, объект File будет автоматически закрыт по окончании блока.
Если вы не передаете блок в File.open
, вы должны убедиться, что файл правильно закрыт, а содержимое записано в файл.
begin
file = File.open("/tmp/some_file", "w")
file.write("your text")
rescue IOError => e
#some error occur, dir not writable etc.
ensure
file.close unless file.nil?
end
Вы можете найти его в документации :
static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
VALUE io = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
}
return io;
}