Silencing Standard Error

Discussion in 'Ruby' started by David Calvin, Jul 8, 2010.

  1. David Calvin

    David Calvin Guest


    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

    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

    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?

    David Calvin, Jul 8, 2010
    1. Advertisements

  2. 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 Harrison, Jul 8, 2010
    1. Advertisements

  3. 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.
    Brian Candler, Jul 8, 2010
  4. If you want to silence all error output and you run on some form of
    *nix you can do:

    $stderr.reopen '/dev/null'


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

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

    Kind regards


    remember.guy do |as, often| as.you_can - without end
    Robert Klemme, Jul 13, 2010
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.