Forum: Ruby on Rails RE: File Auditing with rails - File I/O issue

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9fc9f31415f9384fbe7262fa916e16f5?d=identicon&s=25 Brian Corrigan (Guest)
on 2006-03-17 15:28
(Received via mailing list)
Ok, well I figured out part of the issue.  The CSV file isn't being
written before the Zlib call.  If I break this up into two scripts, the
first that writes the file,  the second that zips it, things work.



Any idea why the CSV file wouldn't be saved when the block ends?



Brian Corrigan
Operations Manager

MGAM Systems, Inc.
1 Broadway Place
Schenectady, NY 12305
<http://maps.yahoo.com/py/maps.py?Pyt=Tmap&addr=1+B...
enectady%2C+NY+12305&country=us>

brian.corrigan@mm-games.com <mailto:brian.corrigan@mm-games.com>

tel:
fax:
mobile:

518-881-1121
518-881-1128
518-727-6652



________________________________

From: rails-bounces@lists.rubyonrails.org
[mailto:rails-bounces@lists.rubyonrails.org] On Behalf Of Brian Corrigan
Sent: Friday, March 17, 2006 9:18 AM
To: rails@lists.rubyonrails.org
Subject: RE: [Rails] File Auditing with rails - File I/O issue



You know.. I realized that after I wrote the email.  My mistake.. But,
same results??



My output is

""

Nil



Any other ideas?



Brian Corrigan
Operations Manager

MGAM Systems, Inc.
1 Broadway Place
Schenectady, NY 12305
<http://maps.yahoo.com/py/maps.py?Pyt=Tmap&addr=1+B...
enectady%2C+NY+12305&country=us>

brian.corrigan@mm-games.com <mailto:brian.corrigan@mm-games.com>

tel:
fax:
mobile:

518-881-1121
518-881-1128
518-727-6652



________________________________

From: rails-bounces@lists.rubyonrails.org
[mailto:rails-bounces@lists.rubyonrails.org] On Behalf Of Chris Hall
Sent: Thursday, March 16, 2006 6:28 PM
To: rails@lists.rubyonrails.org
Subject: Re: [Rails] File Auditing with rails - File I/O issue



I think you might want to try

outfile = "out.gz"
...
Zlib::GzipWriter.open(outfile) do |gz|
  gz.write(File.read(tempfile))
end

also, gzip != zip hence why winzip can't do anything with the resulting
gzipped file.  I wouldn't know if winzip supports gzip compression or
not.  the extension for a gzipped file is typically .gz.

Chris

On 3/16/06, Brian Corrigan <brian.corrigan@mm-games.com> wrote:

Hey Folks,
I've written a script to generate a list of all files on a machine,
then zip the results. I'm going to stick a web front end on it, and use
it to audit some file servers. The problem is that the ZIP
compression/decompression isn't working,
but its not what you might think. The script completes, but seems to
not actually write anything.

Here is a short version that only looks at the C:/temp drive. You can
change this at the top.

---Start Code Here--
require 'find'
require 'csv'
require 'zlib'
tempfile = "temp.csv"
outfile = "out.zip"
dirname = "c:/temp"
# Prepare comma-delimited file for writing
CSV::Writer.generate (File.open(tempfile,"w+"), ',') do |csv|
  Find.find(dirname) do |f|
  csv << [File.dirname(f), File.basename(f), File.mtime(f).to_s]
  end
end
# TEST: View the tempfile to make sure it has data.
# This prints nothing, but the file DOES have info after
# the script completes. Maybe the file isn't written at this point?
p IO.read(tempfile)
Zlib::GzipWriter.open(outfile) do |gz|
gz << File.open (tempfile).read
end
Zlib::GzipReader.open(outfile) {|gz|
print gz.read
}
# The ZIP file can't be extracted with WINZIP. No idea why, but since
# I'll be using another RUBY script for extraction, im not sure that I
care.


---------------------------
Brian Corrigan
---------------------------
A2c85dc5ee81b12e3cc0a6522e8d079d?d=identicon&s=25 Chris Hall (Guest)
on 2006-03-17 17:28
(Received via mailing list)
the problem is you aren't closing the csv file

try this

...
tmpcsv = 'temp.csv'
File.open(tmpcsv, 'w+') do |file|
  CSV::Writer.generate(file) do |csv|
    Find.find(dirname) do |f|
      csv << [File.dirname(f), File.basename(f), File.mtime(f).to_s]
    end
  end
end
...
This topic is locked and can not be replied to.