I cant seem to get the io from a child process of a worker back to my client. There most be something academic I''m missing :/. I looked at examples in Pickaxe and Ruby PLEAC library ... and I believe the following should work: # called from within do_work... def backup(repo) logger.info(''SvnWorker backup repo ''+repo) tmp = [] my_project = DIRS[:project_repos] + "/#{repo}" dummyfile = ''backuptmp'' temp_file = "#{DIRS[:backups]}/#{dummyfile}" svn_cmd = "svnadmin dump #{my_project} | gzip -9 > #{temp_file}" tmp << "piping to tmp" results[:txt] = tmp ### i dont get the output between here ### readme, writeme = IO.pipe pid = fork { # child $stdout = writeme readme.close exec(svn_cmd) } # parent Process.waitpid(pid,0) writeme.close while readme.gets do results[:txt] = $_ end ### i dont get the output between here ### readme.close tmp << "piping done" results[:txt] = tmp tmp << "getting youngest" results[:txt] = tmp youngest = `svnlook youngest #{my_project}` tmp << "youngest got" results[:txt] = tmp rev = "_rev#{youngest.chomp!}" fname = [ "backup_#{repo}_", Time.now.strftime(''%Y-%m-%d''), "#{rev}", ''.gz'' ] destfile = "#{DIRS[:backups]}/#{fname.join}" tmp << "destfile #{destfile}" results[:txt] = tmp FileUtils.mv(temp_file, destfile) tmp << "backup file created at #{Time.now}" results[:txt] = tmp end My previous messages shows taht all data before and after my comments is received by the client. Thanks (again) for any assistance, I''m pretty stumped. I keep plugging away at this and once I get these issues resolved the surrounding app is completed :) [I tested this app prior to using a background job server ... it just timed out on huge projects :/] regards, DavidG. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20070308/f72f6093/attachment.html
Ezra Zygmuntowicz
2007-Mar-08 08:48 UTC
[Backgroundrb-devel] cant fully capture child output
David- Backgroundrb is already doing a lot of forking and redirecting of IO streams. I think you are running into problems because you are forking again in a worker. You can''t really do that and still have things work properly. -Ezra On Mar 8, 2007, at 12:11 AM, David Gurba wrote:> I cant seem to get the io from a child process of a worker back to > my client. There most be something academic I''m missing :/. I > looked at examples in Pickaxe and Ruby PLEAC library ... and I > believe the following should work: > > # called from within do_work... > def backup(repo) > logger.info(''SvnWorker backup repo ''+repo) > tmp = [] > my_project = DIRS[:project_repos] + "/#{repo}" > dummyfile = ''backuptmp'' > temp_file = "#{DIRS[:backups]}/#{dummyfile}" > svn_cmd = "svnadmin dump #{my_project} | gzip -9 > #{temp_file}" > tmp << "piping to tmp" > results[:txt] = tmp > > ### i dont get the output between here ### > > readme, writeme = IO.pipe > pid = fork { > # child > $stdout = writeme > readme.close > exec(svn_cmd) > } > # parent > Process.waitpid(pid,0) > writeme.close > while readme.gets do > results[:txt] = $_ > end > > ### i dont get the output between here ### > > readme.close > tmp << "piping done" > results[:txt] = tmp > tmp << "getting youngest" > results[:txt] = tmp > youngest = `svnlook youngest #{my_project}` > tmp << "youngest got" > results[:txt] = tmp > rev = "_rev#{youngest.chomp!}" > fname = [ > "backup_#{repo}_", > Time.now.strftime(''%Y-%m-%d''), > "#{rev}", > ''.gz'' > ] > destfile = "#{DIRS[:backups]}/#{ fname.join}" > tmp << "destfile #{destfile}" > results[:txt] = tmp > FileUtils.mv(temp_file, destfile) > tmp << "backup file created at #{Time.now}" > results[:txt] = tmp > end > > My previous messages shows taht all data before and after my > comments is received by the client. > > Thanks (again) for any assistance, I''m pretty stumped. I keep > plugging away at this and once I get these issues resolved the > surrounding app is completed :) [I tested this app prior to using a > background job server ... it just timed out on huge projects :/] > > regards, > DavidG. > _______________________________________________ > Backgroundrb-devel mailing list > Backgroundrb-devel at rubyforge.org > http://rubyforge.org/mailman/listinfo/backgroundrb-devel-- Ezra Zygmuntowicz -- Lead Rails Evangelist -- ez at engineyard.com -- Engine Yard, Serious Rails Hosting -- (866) 518-YARD (9273)