Module: Gemvault::GemExtraction
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
- #spec_from_blob(name, version, platform = "ruby") ⇒ Object
- #specs ⇒ Object
- #with_gem_file(name, version, platform: "ruby") ⇒ Object
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 |
#specs ⇒ Object
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 |