trying again....

;-)

SM

---------- Forwarded message ----------
From: Simon Mullis <simon / mullis.co.uk>
Date: Sep 27, 2007 4:16 PM
Subject: minitar - how to extract only one file from a tar archive as an object
To: ruby-talk / ruby-lang.org


Ahoy there, fellow rubyphiles...

I'm trying to use Archive::Tar::Minitar to extract a single file from
a tar archive:

"test.tar" contains:

./test/foo
./test/bar
./test/baz

<code>
# lifted from the minitar source...
require 'archive/tar/minitar'
include Archive::Tar

a = File.open("test.tar", "rb")
Minitar::Input.open(a) do |inp|
    inp.each do |entry|
       inp.extract_entry(".", entry) if entry.full_name =~ /baz/
    end
end
</code>

This all works fine, and writes to "./test/baz"

But!

How could I do the same and create a File object of the extracted
file? (i.e. not write anything to disk).

(The reason I ask is the file I want is a zip, which lives inside the
tar archive and I then want to grab some files from that using the
'rubyzip' gem.)

It's quite possible (in fact, more than likely) that I've missed
something obvious and there is already a straightforward way to do
this.

To be honest, a few more examples of minitar in use would be great.

Many thanks in advance for any pointers or tips.

Cheers!

--
Simon Mullis
_________________
simon / mullis.co.uk