Parent

Class Index [+]

Quicksearch

Gem::Package::TarWriter

Allows writing of tar files

Public Class Methods

new(io) click to toggle source

Creates a new TarWriter, yielding it if a block is given

    # File lib/rubygems/package/tar_writer.rb, line 77
77:   def self.new(io)
78:     writer = super
79: 
80:     return writer unless block_given?
81: 
82:     begin
83:       yield writer
84:     ensure
85:       writer.close
86:     end
87: 
88:     nil
89:   end
new(io) click to toggle source

Creates a new TarWriter that will write to io

    # File lib/rubygems/package/tar_writer.rb, line 94
94:   def initialize(io)
95:     @io = io
96:     @closed = false
97:   end

Public Instance Methods

add_file(name, mode) click to toggle source

Adds file name with permissions mode, and yields an IO for writing the file to

     # File lib/rubygems/package/tar_writer.rb, line 103
103:   def add_file(name, mode) # :yields: io
104:     check_closed
105: 
106:     raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
107: 
108:     name, prefix = split_name name
109: 
110:     init_pos = @io.pos
111:     @io.write "\00"" * 512 # placeholder for the header
112: 
113:     yield RestrictedStream.new(@io) if block_given?
114: 
115:     size = @io.pos - init_pos - 512
116: 
117:     remainder = (512 - (size % 512)) % 512
118:     @io.write "\00"" * remainder
119: 
120:     final_pos = @io.pos
121:     @io.pos = init_pos
122: 
123:     header = Gem::Package::TarHeader.new :name => name, :mode => mode,
124:                                          :size => size, :prefix => prefix
125: 
126:     @io.write header
127:     @io.pos = final_pos
128: 
129:     self
130:   end
add_file_simple(name, mode, size) click to toggle source

Add file name with permissions mode size bytes long. Yields an IO to write the file to.

     # File lib/rubygems/package/tar_writer.rb, line 136
136:   def add_file_simple(name, mode, size) # :yields: io
137:     check_closed
138: 
139:     name, prefix = split_name name
140: 
141:     header = Gem::Package::TarHeader.new(:name => name, :mode => mode,
142:                                          :size => size, :prefix => prefix).to_s
143: 
144:     @io.write header
145:     os = BoundedStream.new @io, size
146: 
147:     yield os if block_given?
148: 
149:     min_padding = size - os.written
150:     @io.write("\00"" * min_padding)
151: 
152:     remainder = (512 - (size % 512)) % 512
153:     @io.write("\00"" * remainder)
154: 
155:     self
156:   end
check_closed() click to toggle source

Raises IOError if the TarWriter is closed

     # File lib/rubygems/package/tar_writer.rb, line 161
161:   def check_closed
162:     raise IOError, "closed #{self.class}" if closed?
163:   end
close() click to toggle source

Closes the TarWriter

     # File lib/rubygems/package/tar_writer.rb, line 168
168:   def close
169:     check_closed
170: 
171:     @io.write "\00"" * 1024
172:     flush
173: 
174:     @closed = true
175:   end
closed?() click to toggle source

Is the TarWriter closed?

     # File lib/rubygems/package/tar_writer.rb, line 180
180:   def closed?
181:     @closed
182:   end
flush() click to toggle source

Flushes the TarWriter’s IO

     # File lib/rubygems/package/tar_writer.rb, line 187
187:   def flush
188:     check_closed
189: 
190:     @io.flush if @io.respond_to? :flush
191:   end
mkdir(name, mode) click to toggle source

Creates a new directory in the tar file name with mode

     # File lib/rubygems/package/tar_writer.rb, line 196
196:   def mkdir(name, mode)
197:     check_closed
198: 
199:     name, prefix = split_name(name)
200: 
201:     header = Gem::Package::TarHeader.new :name => name, :mode => mode,
202:                                          :typeflag => "5", :size => 0,
203:                                          :prefix => prefix
204: 
205:     @io.write header
206: 
207:     self
208:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.