Module: Gemvault::GemExtraction

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

Overview

Shared vault behavior: turn a gem entry (stored or on disk) into gemspecs and temporary files. Host classes must implement #gem_data(entry) and #gem_entries.

Instance Method Summary collapse

Instance Method Details

#spec_from_blob(entry) ⇒ Object



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

def spec_from_blob(entry)
  bytes = gem_data(entry)
  io = StringIO.new(bytes)
  Gem::Package.new(io).spec
end

#specsObject



27
28
29
# File 'lib/gemvault/gem_extraction.rb', line 27

def specs
  gem_entries.map { |entry| spec_from_blob(entry) }
end

#with_gem_file(entry) ⇒ Object



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

def with_gem_file(entry)
  data = gem_data(entry)
  Tempfile.create(["vault_gem", ".gem"]) do |tmpfile|
    tmpfile.binmode
    tmpfile.write(data)
    tmpfile.flush
    yield tmpfile.path
  end
end