[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