Back from the conference and eager to learn Ruby, I'm trying to write a
tool for grepping the table of contents of jar files.  (I have a similar
Bourne shell script, but I want to add some features and start small
learning Ruby).  I have something working, but in trying to restructure
it, I've encountered a problem with Shell#transact when using it inside
an instance method of a class.  In both cases, I've used
Shell#def_system_command to define jar and grepcmd like this:

    Shell.def_system_command "jar"
    Shell.def_system_command "grepcmd", "grep"

If I have a "plain" script (i.e. no class definition or methods), I have
no problem with the following:

    sh = Shell.new
    ARGV.each { |jarfile|
      sh.transact do
        results = jar("tf", jarfile) | grepcmd(pattern)
        puts results
      end
    }

However, if I try to put this in an instance method (see next code
snippet), it never returns and starts taking 100% of my CPU until I kill
it.

    class JarGrepper
      attr_writer :pattern
      def jartoc(jarfile)
        sh = Shell.new
        sh.transact do
          results = jar("tf", jarfile) | grepcmd(@pattern)
          puts results
        end
      end
    end

If I take out the transact (see next code snippet), it works, but I get
warnings:

    class JarGrepper
      attr_writer :pattern
      def jartoc(jarfile)
        sh = Shell.new
        results = sh.jar("tf", jarfile) | sh.grepcmd(@pattern)
        puts results
      end
    end

Here are the warnings:

    shell: notice: Process finishing...
           wait for Job[grep:#6293] to finish.
           You can use Shell#transact or Shell#check_point for more safe
           execution.
    shell: notice: Process finishing...
           wait for Job[jar:#6292] to finish.
           You can use Shell#transact or Shell#check_point for more safe
           execution.

What I'd like to be able to do is to get the results of 'jar("tf",
jarfile) | grepcmd(@pattern)' from within an instance method and without
warnings.

In case it's relevant, I'm running Ruby 1.6.7 on Red Hat Linux 7.2.

Thanks in advance for any help or explanations,
Xandy