Module: Gemvault::GemExtraction
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 |
#specs ⇒ Object
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 |