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.