[Backgroundrb-devel] cant fully capture child output

Ezra Zygmuntowicz ezmobius at gmail.com
Thu Mar 8 03:48:10 EST 2007


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)




More information about the Backgroundrb-devel mailing list