⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.13
Server IP:
109.199.105.153
Server:
Linux connect.inboxifs.com 5.15.0-152-generic #162-Ubuntu SMP Wed Jul 23 09:48:42 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.2.29
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
ri
/
3.0.0
/
system
/
Tempfile
/
View File Name :
cdesc-Tempfile.ri
U:RDoc::NormalClass[iI" Tempfile:ET@I"DelegateClass(File);To:RDoc::Markup::Document:@parts[o;;[#o:RDoc::Markup::Paragraph;[I"NA utility class for managing temporary files. When you create a Tempfile ;TI"Pobject, it will create a temporary file with a unique filename. A Tempfile ;TI"Pobjects behaves just like a File object, and you can perform all the usual ;TI"Rfile operations on it: reading data, writing data, changing its permissions, ;TI"Setc. So although this class does not explicitly document all instance methods ;TI"Ksupported by File, you can in fact call any File instance method on a ;TI"Tempfile object.;To:RDoc::Markup::BlankLine S:RDoc::Markup::Heading: leveli: textI" Synopsis;T@o:RDoc::Markup::Verbatim;[I"require 'tempfile' ;TI" ;TI" file = Tempfile.new('foo') ;TI"Gfile.path # => A unique filename in the OS's temp directory, ;TI"2 # e.g.: "/tmp/foo.24722.0" ;TI"G # This filename contains 'foo' in its basename. ;TI"file.write("hello world") ;TI"file.rewind ;TI"'file.read # => "hello world" ;TI"file.close ;TI",file.unlink # deletes the temp file ;T:@format0S;;i; I"Good practices;T@S;;i; I"Explicit close;T@o; ;[I"OWhen a Tempfile object is garbage collected, or when the Ruby interpreter ;TI"Oexits, its associated temporary file is automatically deleted. This means ;TI"Othat's it's unnecessary to explicitly delete a Tempfile after use, though ;TI"Oit's good practice to do so: not explicitly deleting unused Tempfiles can ;TI"Kpotentially leave behind large amounts of tempfiles on the filesystem ;TI"Quntil they're garbage collected. The existence of these temp files can make ;TI"4it harder to determine a new Tempfile filename.;T@o; ;[I"QTherefore, one should always call #unlink or close in an ensure block, like ;TI" this:;T@o;;[I" file = Tempfile.new('foo') ;TI"begin ;TI"' # ...do something with file... ;TI"ensure ;TI" file.close ;TI". file.unlink # deletes the temp file ;TI" end ;T;0o; ;[I"TTempfile.create { ... } exists for this purpose and is more convenient to use. ;TI"TNote that Tempfile.create returns a File instance instead of a Tempfile, which ;TI">also avoids the overhead and complications of delegation.;T@o;;[I"$Tempfile.open('foo') do |file| ;TI"' # ...do something with file... ;TI" end ;T;0S;;i; I"Unlink after creation;T@o; ;[I"OOn POSIX systems, it's possible to unlink a file right after creating it, ;TI"Nand before closing it. This removes the filesystem entry without closing ;TI"Mthe file handle, so it ensures that only the processes that already had ;TI"Hthe file handle open can access the file's contents. It's strongly ;TI"Lrecommended that you do this if you do not want any other processes to ;TI"Kbe able to read from or write to the Tempfile, and you do not need to ;TI")know the Tempfile's filename either.;T@o; ;[ I"PFor example, a practical use case for unlink-after-creation would be this: ;TI"Nyou need a large byte buffer that's too large to comfortably fit in RAM, ;TI"Oe.g. when you're writing a web server and you want to buffer the client's ;TI"file upload data.;T@o; ;[I"EPlease refer to #unlink for more information and a code example.;T@S;;i; I"Minor notes;T@o; ;[I"TTempfile's filename picking method is both thread-safe and inter-process-safe: ;TI"Rit guarantees that no other threads or processes will pick the same filename.;T@o; ;[I"PTempfile itself however may not be entirely thread-safe. If you access the ;TI"Rsame Tempfile object from multiple threads then you should protect it with a ;TI"mutex.;T: @fileI"lib/tempfile.rb;T:0@omit_headings_from_table_of_contents_below0;0;0[ [ [ [[I" class;T[[:public[[I"create;TI"lib/tempfile.rb;T[I"new;T@u[I" open;T@u[:protected[ [:private[ [I" instance;T[[;[ [I" close;T@u[I"close!;T@u[I"delete;T@u[I"length;T@u[I" open;T@u[I" path;T@u[I" size;T@u[I"unlink;T@u[;[ [;[ [ [U:RDoc::Context::Section[i 0o;;[ ;0;0[@i@icRDoc::TopLevel