From: Kurt Euler Date: 2002-06-10T05:07:08+09:00 Subject: RE: Park and Sean....Possible memory bug in Ruby? I'm stumped! Thanks a lot, Park and Sean. Two questions: - Sean, what do you mean by CG when you write in your message "This is exactly the type of error that CG causes"? - Is there a set limit on the number of files that can be open? If so, how many? - Park, you write that one option is this: inserta = File.new("./input/intro_subtemplate.txt").read should be f = File.new("./input/intro_subtemplate.txt") inserta = f.read f.close but, these statements seem logically (to this newbie) to be logically equivalent. Does the one-line method I used create a phantom file that can't be closed? Thanks again! -Kurt -----Original Message----- From: Park Heesob [mailto:phasis@kornet.net] Sent: Sunday, June 09, 2002 1:38 AM To: ruby-talk@ruby-lang.org Subject: Re: Possible memory bug in Ruby? I'm stumped! Hi, "Kurt Euler" wrote in message news:C47CCC6238EFD4119C5200508B95A100074AF63B@cup1ex1.portal.com... > All- > > The code as written after the dashed line way below (with file name t7.rb) correctly inserts the contents of file "intro_subtemplate.txt" into a template file during each iteration, resulting in the creation of some 189 identical but differently named files in directory "./output". (There are 189 > filenames in the 189 rows in file "packages.txt".) > > > t7.rb:6:in 'initialize': Invalid argument - "./input/intro_subtemplate.txt" (Errno::EINVAL) > from t7.rb:6:in 'new' > from t7.rb:6 > from t7.rb:2in 'foreach' > from t7.rb:2 > > > t7.rb:15:in 'initialize': Invalid argument - "./output/SOL_BroadbandManager_6.2_SP1" (Errno::EINVAL) > from t7.rb:15:in 'new' > from t7.rb:15 > from t7.rb:2in 'foreach' > from t7.rb:2 > These error messages caused by too many open files. > > Thanks in advance!!! > > -Kurt Euler > (I'm using Ruby 1.67) > > > > File t7.rb: > -------------------------------------------------------------- > content = File.new("./input/main_readme_template.txt").read > IO.foreach("./input/packages.txt") { |x| > field = x.chop.split(':') > content2 = content > > inserta = File.new("./input/intro_subtemplate.txt").read > content2.gsub!(//, inserta) > > #insertb = File.new("./input/install_unix_subtemplate.txt").read > #content2.gsub!(//, insertb) > > #insertc = File.new("./input/files_changed_sp_num-1_subtemplate.txt").read > #content2.gsub!(//, insertc) > > File.new("./output/"+field[0],"w+").write(content2) > puts field[0] > } > Following three lines should be placed before IO.foeach loop. inserta = File.new("./input/intro_subtemplate.txt").read insertb = File.new("./input/install_unix_subtemplate.txt").read insertc = File.new("./input/files_changed_sp_num-1_subtemplate.txt").read Or inserta = File.new("./input/intro_subtemplate.txt").read should be f = File.new("./input/intro_subtemplate.txt") inserta = f.read f.close Park Heesob.