Silencing Standard Error

Hello,

I am new here, so I apologize if this is a lame question. I have googled
for quite awhile trying to find out the answer to my question to no
avail.

In a script, I am issuing this line:

returnAddress = `defaults read

/path/to/conappsqa.bundle/serverconfig serverAddress`

Which reads a plist entry on my computer. If the plist entry is not
present then I get the following spew on the command line when I run the
script:

2010-07-08 09:32:37.273 defaults[29326:40b]
The domain/default pair of (/path/to/conappsqa.bundle/serverconfig,
serverAddress) does not exist

Is there a way I can eliminate this kind of spew? I just want to execute
the code and handle the error. I don’t want all the mess.

Any tips?

Thanks.

Have you tried just simply stderr? You could either run the script and
have 2>/dev/null be the redirect, or inside the backticks I think you
can safely use the same redirect.

You can do it more ruby specific by redefining $STDERR, but that’s
probably overkill if it’s a simple script.

James

David C. wrote:

Any tips?

If you’re running under some Unix-like O/S, then try

returnAddress = defaults read /path/to/conappsqa.bundle/serverconfig serverAddress 2>/dev/null

Otherwise look at open3.rb in the standard library.

2010/7/8 David C. [email protected]:

returnAddress = `defaults read

Is there a way I can eliminate this kind of spew? I just want to execute
the code and handle the error. I don’t want all the mess.

Any tips?

If you want to silence all error output and you run on some form of
*nix you can do:

$stderr.reopen ‘/dev/null’

Example:

$ ruby19 -e ‘x=sh -c "echo foo >&2"
foo
$ ruby19 -e ‘$stderr.reopen("/dev/null");x=sh -c "echo foo >&2"
$

Otherwise you need open3 as Brian said or do the fork exec yourself.

Kind regards

robert

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs