was the missing comment one that I deleted because I was wrong. f.meta is the headers.  

I never quite figured out the interplay between @length and @content_length and @transferred. I stopped when I got it working well enough on Shoes 3.2. The open_uri doc says the size var in the :progress is the total bytes transferred so far.  accumulative. Content length can be incorrect for Ruby >=  2.0  but the :process var sum is accurate. I have no idea what Jruby reports. It might be different.