После дальнейших исследований кажется, что вы можете использовать флаги режима 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