Ответ 1
После дальнейших исследований кажется, что вы можете использовать флаги File:: CREAT и File:: EXCL.
filename = 'foo'
File.open(filename, File::WRONLY|File::CREAT|File::EXCL) do |file|
file.write contents
end
В этом случае open
вызовет исключение, если файл существует. После запуска один раз эта программа завершается без ошибок, создавая файл с именем foo
. Во втором запуске программа выдает следующее:
foo.rb:2:in `initialize': File exists - foo (Errno::EEXIST)
from foo.rb:2:in `open'
from foo.rb:2
От man open
:
O_WRONLY open for writing only
O_CREAT create file if it does not exist
O_EXCL error if O_CREAT and the file exists