Module: Gemvault::GemExtraction

Included in:
Dbvault, Tarvault
Defined in:
lib/gemvault/gem_extraction.rb

Overview

Shared vault behavior: turn gem bytes (stored or on disk) into gemspecs and temporary files. Host classes must implement #gem_data(name, version, platform:) and #gem_entries.

Instance Method Summary collapse

Instance Method Details

#spec_from_blob(name, version, platform = "ruby") ⇒ Object



21
22
23
# File 'lib/gemvault/gem_extraction.rb', line 21

def spec_from_blob(name, version, platform = "ruby")
  Gem::Package.new(StringIO.new(gem_data(name, version, platform: platform))).spec
end

#specsObject



25
26
27
# File 'lib/gemvault/gem_extraction.rb', line 25

def specs
  gem_entries.map { |entry| spec_from_blob(entry.name, entry.version, entry.platform) }
end

#with_gem_file(name, version, platform: "ruby") ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/gemvault/gem_extraction.rb', line 11

def with_gem_file(name, version, platform: "ruby")
  tmpfile = write_tempfile(gem_data(name, version, platform: platform))
  begin
    yield tmpfile.path
  ensure
    tmpfile.close unless tmpfile.closed?
    tmpfile.unlink
  end
end