File.size? incorrect for big files?

N

Nation, Carey

Hi,

I've written a script to monitor some files stored on our network. The
files range from a few hundred MB to 20-50g. Above a certain point
which I haven't really narrowed down yet, the file sizes start being
reported incorrectly from my script. It's as if the routine that does
the system query is using a 32 bit thing for the size and it's getting
truncated as integers do. Some files actually come back with a negative
size. The data type that ruby is using is perfectly capable of holding
the size of the files. I've tried File.size? and FileUtils.size?, so
I'm somewhat at a loss short of writing an extension. Any ideas?

=20

The script is running on windows, querying the files via UNC paths
through a samba share on linux.

=20

Thanks!

=20

________________________________

Carey Nation <mailto:[email protected]> =20

Lead Software Engineer

CNN BEST

Broadcast Production Systems

Video Solutions Group

(404)827-2935 (wk)

(404)824-0033 (cell)

________________________________

=20
 
F

Fred Talpiot

Some versions, maybe all, of the windows libraries have a bug in
File.size.
Make sure you have the latest win32 gems, it seems to help.

The 'gem outdated' and 'gem update' commands can help.

The only bug I've seen is on moderately sized files where the ruby code
closes the file then immediately checks the file size. It came back as
zero. I worked around it several versions ago, so my info is not as of
today.
 
D

Daniel Berger

Hi,

I've written a script to monitor some files stored on our network. =A0The
files range from a few hundred MB to 20-50g. =A0Above a certain point
which I haven't really narrowed down yet, the file sizes start being
reported incorrectly from my script. =A0It's as if the routine that does
the system query is using a 32 bit thing for the size and it's getting
truncated as integers do. Some files actually come back with a negative
size. =A0The data type that ruby is using is perfectly capable of holding
the size of the files. =A0I've tried File.size? and FileUtils.size?, so
I'm somewhat at a loss short of writing an extension. Any ideas?

The script is running on windows, querying the files via UNC paths
through a samba share on linux.

It's a bug in Ruby.

The win32-file library fixes it.

require 'win32/file' # Do this first
File.size(some_big_file)

Regards,

Dan
 
N

Nobuyoshi Nakada

Hi,

At Fri, 14 Mar 2008 03:59:30 +0900,
Nation, Carey wrote in [ruby-talk:294466]:
The script is running on windows, querying the files via UNC paths
through a samba share on linux.

Microsoft Visual C's runtime doesn't support large files, so
ruby compiled with it also doesn't. Ruby 1.9 replaces some
functions to fix it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,038
Latest member
OrderProperKetocapsules

Latest Threads

Top