From: Jan Svitok Date: 2006-12-28T19:17:38+09:00 Subject: Re: Problem with win32 change notify, dbi and sql server On 12/27/06, lrlebron@gmail.com wrote: > I have created a script to monitor a directory and update a database Hi, don't know the solution, just a small off-topic hint: you can write this > myMatch = @excluded_dirs.select{|e| fullname.include?e} > if myMatch.length == 0 as unless @excluded_dirs.any?{|e| fullname.include?e} and this > if not @excluded_files == nil and @excluded_files.length > 0 if not @excluded_files.nil? and not @excluded_files.empty? or > if not @excluded_files.include? > File.extname(arr[0][1]) > > if arr[0][0].to_s.include? "added" > > puts "Adding file " + arr[0][1].to_s > file_added(arr) > > end > > end > > end > > end > > end > > } while true > > rescue Exception => e > puts e > end > > def file_added(arr) > > date_format_str = "%Y%m%d %X" > filename = arr[0][1].to_s > > if filename.include?"/" > filename.gsub!("/","\\") > end > > if @folder_to_watch.include?"/" > @folder_to_watch.gsub!("/","\\") > end > > fullname = @folder_to_watch + filename > > stat = File::Stat.new(fullname) > > file_type = File.ftype(fullname).capitalize > dirname = File.dirname(fullname) > > if file_type.include? "File" > > myKey = @MyDb.tmf_insert_new_file(File.basename(filename), > stat.size, stat.ctime.strftime(date_format_str), dirname, > File.extname(fullname), fullname,File.read_only?(fullname), > stat.atime.strftime(date_format_str), > stat.mtime.strftime(date_format_str), file_type, > File.dirname(fullname)) > > elsif file_type.include? "Directory" > > myKey = @MyDb.tmf_insert_new_file(File.basename(filename), 0, > stat.ctime.strftime(date_format_str), fullname, 'None', fullname, > File.read_only?(fullname), stat.atime.strftime(date_format_str), > stat.mtime.strftime(date_format_str), "Directory", dirname) > > end > > rescue Exception =>e > puts "Error in file_added method." > puts e > > end > > def files_to_exclude(arr) > @excluded_files = arr > end > > def dirs_to_exclude(arr) > @excluded_dirs = arr > end > > end > > MyFSM = Fsm.new('C:\\') > file_arr = [".moztmp", ".LOG", ".log",".bak", ".tmp", ".pf", ".dat", > ".TMP", ".DAT"] > dir_arr = [Dir::LOCAL_APPDATA, Dir::APPDATA, Dir::WINDOWS + "\\Temp", > Dir::COMMON_APPDATA, Dir::INTERNET_CACHE, Dir::SYSTEM, Dir::WINDOWS + > "\\Prefetch" ] > MyFSM.files_to_exclude(file_arr) > MyFSM.dirs_to_exclude(dir_arr) > MyFSM.monitor() > > Any ideas would be greatly appreciated. > > thanks, > > Luis > > >