class Falkor::Extract::Gem

Attributes

file_name[R]

Public Class Methods

new(file_name) click to toggle source
# File lib/falkor/extract/gem.rb, line 6
def initialize(file_name)
  @file_name = file_name
end

Public Instance Methods

extract() click to toggle source
# File lib/falkor/extract/gem.rb, line 10
def extract
  ::Gem::Package::FileSource.new(file_name).with_read_io do |io|
    ::Gem::Package::TarReader.new(io).each do |entry|
      next if entry.full_name != "data.tar.gz"

      write_tar_file(entry.read)

      remove_file
      break # ignore further entries
    end
  end

  tar_file_name
end

Private Instance Methods

remove_file() click to toggle source
# File lib/falkor/extract/gem.rb, line 41
def remove_file
  FileUtils.rm file_name
end
tar_file_name() click to toggle source
# File lib/falkor/extract/gem.rb, line 35
def tar_file_name
  File.join(
    File.dirname(file_name), File.basename(file_name, ".gem") + ".tar.gz"
  )
end
write_tar_file(contents) click to toggle source
# File lib/falkor/extract/gem.rb, line 29
def write_tar_file(contents)
  File.open(tar_file_name, "wb") do |file|
    file.write contents
  end
end