Uh oh. In a corner. Need help.

E

Eric Armstrong

My rakefile needs to abort when an html
file can't be parsed into REXML, so I
can report the error and fix it. But...

Running tidy in a subshell, I can find
no way to access the error message it
sends to std error. I can see it, but
is there a way to get ruby to see it?

This idiom doesn't seem to work

sh "tidy ... > file" do |ok, res|
if !ok then
# Never runs
end
end

The "result" is an empty string. Std out
goes to the file, as expected, but std
error does not go to res.

Trying to run htree instead, I have some
strange ".so not found" error that I
posted last week, but am unable to decipher
on my own. (Of necessity, ruby is in a
non-standard location, and that seems to be
causing difficulties.)

I need a workaround, or a different strategy.
 
G

gwtmp01

Running tidy in a subshell, I can find
no way to access the error message it
sends to std error. I can see it, but
is there a way to get ruby to see it?

This idiom doesn't seem to work

sh "tidy ... > file" do |ok, res|
if !ok then
# Never runs
end
end

You can redirect stderr to a file:

tidy ... > file 2> errlog

Maybe that will get you going in the right direction.
 
A

Alex Young

Eric said:
My rakefile needs to abort when an html
file can't be parsed into REXML, so I
can report the error and fix it. But...

Running tidy in a subshell, I can find
no way to access the error message it
sends to std error. I can see it, but
is there a way to get ruby to see it?
You can:

- Use open3, which gives you access to stderr.
(http://ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html)

- Use ruby-tidy, which wraps the tidy library and gives you exceptions
when things go wrong. (http://rubyforge.org/projects/tidy)

- Redirect stderr in your shell command. ("tidy ... > file 2> errors")

I've used the second method quite successfully. It's dead simple, but
you've got to be careful about different Ruby threads using the library.
It's quite easy to make it go pop unless you wrap it in a critical
section.
 
E

Eric Armstrong

Thanks, Alex. And you, too, "gwtmp01".
Cripes. I never knew about "2>"! That's
the easiest solution, in this case.

I appreciate the additional information,
as well. They give me some alternatives
to examine.

You guys saved the day! Thanks much.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top