From: Todd Benson Date: 2008-02-07T07:50:31+09:00 Subject: Re: pulling elements into a method... On Feb 6, 2008 4:19 PM, grooveska wrote: > I am new to ruby and I'm having trouble with a script I'm working on. > It probably is something simple that I am missing. I am working on a > script to delete some files from several directories. > > Here is the part of the script I'm having problems with: > > time = Time.now #set time object to the current time > month = time.month #grab the number of the month from the > current > day = time.day #grab the day of the current time > year = time.year #grab the year of the current time > > day = day - 14 > def delete_old_files(dir, time) > Dir.chdir(dir) do > Dir.foreach(".") do |entry| > next if File.stat(entry).directory? #prevent from deleting > directories > > #Use the modification time > if File.mtime(entry) < time > File.unlink(entry) > end > end > end > end > > cleanup_dirs = ["E:/oracle/MB4/oraarch/", "E:/oracle/MB3/oraarch/", > "E:/oracle/MB5/oraarch", "F:/oracle/MBA/oraarch/", "F:/oracle/MB2/ > oraarch/", "F:/oracle/MB3/oraarch/", "F:/oracle/MB/oraarch/"] > cleanup_dirs.each do |cleanup_directory| > > delete_old_files(cleanup_directory,Time.local(year,month,day,00,00,0)) > > end > > > I should probably use a block or proc or something like that. Any > advice is greatly appreciated. I'm getting the argument out of range Well, for one thing, your day will be negative if it is less than 14. I would think you'd be better off using Date instead of Time. To illustrate (for today)... irb:(main):001:0> require 'date' => true irb:(main):002:0> d = Date.today => # irb:(main):003:0> d.day - 14 => -8 irb:(main):004:0> d.to_s => "2008-02-06" irb:(main):005:0> (d - 14).to_s => "2008-01-23" irb:(main):006:0> Time.local(2008, 2, -8) Argument Error: argument out of range... hth, Todd