Module Gem::Package
In: lib/rubygems/package.rb

Methods

open   pack  

Classes and Modules

Module Gem::Package::FSyncDir
Module Gem::Package::TarReader
Class Gem::Package::BadCheckSum
Class Gem::Package::ClosedIO
Class Gem::Package::Error
Class Gem::Package::FormatError
Class Gem::Package::NonSeekableIO
Class Gem::Package::TarHeader
Class Gem::Package::TarInput
Class Gem::Package::TarInvalidError
Class Gem::Package::TarOutput
Class Gem::Package::TarReader
Class Gem::Package::TarTestCase
Class Gem::Package::TarWriter
Class Gem::Package::TooLongFileName

Public Class methods

FIX: zenspider said: does it really take an IO? passed to a method called open?!? that seems stupid.

[Source]

    # File lib/rubygems/package.rb, line 36
36:   def self.open(io, mode = "r", signer = nil, &block)
37:     tar_type = case mode
38:                when 'r' then TarInput
39:                when 'w' then TarOutput
40:                else
41:                  raise "Unknown Package open mode"
42:                end
43: 
44:     tar_type.open(io, signer, &block)
45:   end

[Source]

    # File lib/rubygems/package.rb, line 47
47:   def self.pack(src, destname, signer = nil)
48:     TarOutput.open(destname, signer) do |outp|
49:       dir_class.chdir(src) do
50:         outp.metadata = (file_class.read("RPA/metadata") rescue nil)
51:         find_class.find('.') do |entry|
52:           case
53:           when file_class.file?(entry)
54:             entry.sub!(%r{\./}, "")
55:             next if entry =~ /\ARPA\//
56:             stat = File.stat(entry)
57:             outp.add_file_simple(entry, stat.mode, stat.size) do |os|
58:               file_class.open(entry, "rb") do |f|
59:                 os.write(f.read(4096)) until f.eof?
60:               end
61:             end
62:           when file_class.dir?(entry)
63:             entry.sub!(%r{\./}, "")
64:             next if entry == "RPA"
65:             outp.mkdir(entry, file_class.stat(entry).mode)
66:           else
67:             raise "Don't know how to pack this yet!"
68:           end
69:         end
70:       end
71:     end
72:   end

[Validate]