Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Allows writing of tar files
Creates a new TarWriter, yielding it if a block is given
# File rubygems/package/tar_writer.rb, line 76 def self.new(io) writer = super return writer unless block_given? begin yield writer ensure writer.close end nil end
Creates a new TarWriter that will write to
io
# File rubygems/package/tar_writer.rb, line 93 def initialize(io) @io = io @closed = false end
Adds file name
with permissions mode
, and yields
an IO for writing the file to
# File rubygems/package/tar_writer.rb, line 102 def add_file(name, mode) # :yields: io check_closed raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos= name, prefix = split_name name init_pos = @io.pos @io.write "\0" * 512 # placeholder for the header yield RestrictedStream.new(@io) if block_given? size = @io.pos - init_pos - 512 remainder = (512 - (size % 512)) % 512 @io.write "\0" * remainder final_pos = @io.pos @io.pos = init_pos header = Gem::Package::TarHeader.new :name => name, :mode => mode, :size => size, :prefix => prefix @io.write header @io.pos = final_pos self end
Add file name
with permissions mode
size
bytes long. Yields an IO to write the file to.
# File rubygems/package/tar_writer.rb, line 135 def add_file_simple(name, mode, size) # :yields: io check_closed name, prefix = split_name name header = Gem::Package::TarHeader.new(:name => name, :mode => mode, :size => size, :prefix => prefix).to_s @io.write header os = BoundedStream.new @io, size yield os if block_given? min_padding = size - os.written @io.write("\0" * min_padding) remainder = (512 - (size % 512)) % 512 @io.write("\0" * remainder) self end
Raises IOError if the TarWriter is closed
# File rubygems/package/tar_writer.rb, line 160 def check_closed raise IOError, "closed #{self.class}" if closed? end
Closes the TarWriter
# File rubygems/package/tar_writer.rb, line 167 def close check_closed @io.write "\0" * 1024 flush @closed = true end
Is the TarWriter closed?
# File rubygems/package/tar_writer.rb, line 179 def closed? @closed end
Flushes the TarWriter’s IO
# File rubygems/package/tar_writer.rb, line 186 def flush check_closed @io.flush if @io.respond_to? :flush end
Creates a new directory in the tar file name
with
mode
# File rubygems/package/tar_writer.rb, line 195 def mkdir(name, mode) check_closed name, prefix = split_name(name) header = Gem::Package::TarHeader.new :name => name, :mode => mode, :typeflag => "5", :size => 0, :prefix => prefix @io.write header self end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.