Prev: class ExistingName
Next: Counting a string
From: THAKUR PRASHANT SINGH on 26 Feb 2010 02:17 I am creating zip file using ruby zip there are two versions of creating the zip file 1st version part of class and in 2nd version running it alone. The kmz file created with 1st version doesn't contain complete text of LOC_0.kml Whereas the 2nd version does contain the complete file contents.. I.e. if LOC_0.kml has 100 lines then 1st version kmz file contains only 95 lines while 2nd version contains complete 100 lines. Can you please suggest what can be the reason ? ====================Class function====================== require 'zip/zip' class ZipUtils attr :filename def initialize(filename) @filename=filename end def createkmzfile kml_name=(a)filename puts kml_name kmz_file = kml_name.sub(".kml",".kmz") File.delete(kmz_file) if File.exists?(kmz_file) Zip::ZipFile.open(kmz_file, Zip::ZipFile::CREATE) { |zf| zf.add(kml_name, "kml/#{kml_name}") zf.mkdir("images") imglist=Dir.glob("images/*.png") puts imglist for i in 0..imglist.size-1 zf.add(imglist[i], imglist[i]) end } end end ==========================external file=========================== require 'zip/zip' class ZipUtils attr :filename def initialize(filename) @filename=filename end def createkmzfile end end kml_name="LOC_0.kml" kmz_file = kml_name.sub(".kml",".kmz") puts kml_name File.delete(kmz_file) if File.exists?(kmz_file) Zip::ZipFile.open(kmz_file, Zip::ZipFile::CREATE) { |zf| zf.add(kml_name, "kml/#{kml_name}") zf.mkdir("images") imglist=Dir.glob("images/*.png") puts imglist for i in 0..imglist.size-1 zf.add(imglist[i], imglist[i]) end }
From: Brian Candler on 26 Feb 2010 03:53 Your first piece of code doesn't do anything at all, because it just creates a class ZipUtils but does nothing with it (never instantiates it, never calls a class method). Please make two complete standalone test programs to demonstrate your problem. This means that (a) we can see if we can duplicate your problem on our own machines, and (b) we can tell you why it's not working as you expect. Or you may find in the process of making these standalone problems where the issue lies. It's also useful to know what version of ruby you're running under, and what O/S. -- Posted via http://www.ruby-forum.com/.
From: THAKUR PRASHANT SINGH on 26 Feb 2010 05:54 The ruby version is ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] The OS is Win XP The first piece of code is called as lines below from another class zip_file= ZipUtils.new(@file_names[file_index]) zip_file.createkmzfile -----Original Message----- From: b.candler(a)pobox.com [mailto:b.candler(a)pobox.com] Sent: Friday, February 26, 2010 2:24 PM To: ruby-talk ML Subject: Re: Class Function call vs Normal Function call Your first piece of code doesn't do anything at all, because it just creates a class ZipUtils but does nothing with it (never instantiates it, never calls a class method). Please make two complete standalone test programs to demonstrate your problem. This means that (a) we can see if we can duplicate your problem on our own machines, and (b) we can tell you why it's not working as you expect. Or you may find in the process of making these standalone problems where the issue lies. It's also useful to know what version of ruby you're running under, and what O/S. -- Posted via http://www.ruby-forum.com/.
From: Brian Candler on 26 Feb 2010 06:06 THAKUR PRASHANT SINGH wrote: > The first piece of code is called as lines below from another class > zip_file= ZipUtils.new(@file_names[file_index]) > zip_file.createkmzfile That's no good. As I said, you need to create two separate *standalone* test cases which replicate the problem. This is because the problem you describe makes no sense just with the code snippets you posted, since the code is the same in both cases, as you know. Hence the problem lies somewhere outside, and so it's up to you to provide two *complete* runnable programs which demonstrate the problem. Since these programs read external data, you'll need to provide some sample data files too (or better, include some short data items within the code itself, if you can still replicate the problem like this) -- Posted via http://www.ruby-forum.com/.
From: THAKUR PRASHANT SINGH on 26 Feb 2010 06:17
Hi Brain, I have tried to create a test application with code like zip_file= ZipUtils.new('FILE_0.kml') zip_file.createkmzfile this works fine. The problem comes which I think is when we have very high CPU usage in my case it was 50% i.e. in dual processor machine a processor was completely occupied. Can this be a reason ? The test scenario can be load the CPU in program and then execute these lines when utilization reaches these levels. I got a similar issue when I was using REXML which got corrected when I switched to Nokogiri.. Any other pointers ?? Regards, Prashant -----Original Message----- From: b.candler(a)pobox.com [mailto:b.candler(a)pobox.com] Sent: Friday, February 26, 2010 4:36 PM To: ruby-talk ML Subject: Re: Class Function call vs Normal Function call THAKUR PRASHANT SINGH wrote: > The first piece of code is called as lines below from another class > zip_file= ZipUtils.new(@file_names[file_index]) > zip_file.createkmzfile That's no good. As I said, you need to create two separate *standalone* test cases which replicate the problem. This is because the problem you describe makes no sense just with the code snippets you posted, since the code is the same in both cases, as you know. Hence the problem lies somewhere outside, and so it's up to you to provide two *complete* runnable programs which demonstrate the problem. Since these programs read external data, you'll need to provide some sample data files too (or better, include some short data items within the code itself, if you can still replicate the problem like this) -- Posted via http://www.ruby-forum.com/. |