Suppressing printing of evaluated expressions in irb

I've looked all over, but I can't figure out how to suppress the
printing of evaluated expressions in irb. Ordinarily, this is no
problem:

irb(main):001:0> a =
=>

But what if the thing returned is huge?

irb(main):001:0> b = function_returning_something_huge
<disaster>

In Python, the interpreter suppresses the printing of the expression if
there is assignment, but not otherwise:

a =
a

b = function_returning_something_huge()
b

<disaster, but I asked for it!>

How do I get the same or similar behavior in irb?

Thanks in advance,

Michael

In irb, enter `conf.return_format = ""` That'll turn off all printing of evaluations in irb, which means you have to use `puts` if you want to see any results, but it'll avoid your disasters.

You can add 2 methods to your .irbrc if you like, one that clears the formatting with the line I gave, and one that sets it back to normal (the default is "=> %s\n"), so that you can switch back and forth between the two modes easily.

There may be a better solution, but this is all I came up with. Still, I hope it helps.

Tim

···

On Mar 20, 2006, at 3:13 PM, Michael Hartl wrote:

I've looked all over, but I can't figure out how to suppress the
printing of evaluated expressions in irb. Ordinarily, this is no
problem:

irb(main):001:0> a =
=>

But what if the thing returned is huge?

irb(main):001:0> b = function_returning_something_huge
<disaster>

If you want to suppress printing for just one line, try appending ';0'
to the end of the command:

irb(main):001:0> b = function_returning_something_huge;0
=> 0

···

On 3/20/06, Michael Hartl <mhartl@gmail.com> wrote:

I've looked all over, but I can't figure out how to suppress the
printing of evaluated expressions in irb. Ordinarily, this is no
problem:

irb(main):001:0> a =
=>

But what if the thing returned is huge?

irb(main):001:0> b = function_returning_something_huge
<disaster>

There is another solution, that of course I realize after I send out the message. You can set conf.return_format to "=> %0.100s\n", where the number after the . (in this case 100), is the maximum number of characters you want printed to the screen.

Tim

···

On Mar 20, 2006, at 4:25 PM, Timothy Bennett wrote:

There may be a better solution, but this is all I came up with.

Thanks for your help. Tim's suggestions are nice, but I'd prefer to be
able to make the print/no-print decision on the fly, on a per-statement
basis. On these grounds, Caleb's suggestion meets my needs best. I
had actually tried using a semicolon, but of course irb then just waits
for the next statement. Putting a 0 (or anything else) is a bit of a
kludge compared to the Python interpreter's convention, but it gets the
job done.

Thanks,

Michael

Hello everyone,

I'm trying to keep a thread alive after exiting a method. The pseudo-code is as follows:

class A
  
  def start
    @mainThread = Thread.new {
      oneThread = Thread.new {
        # do some stuff
      }
      twoThread = Thread.new {
        # do some other stuff
      }
      oneThread.join
      twoThread.join
    }
  end
end

aObject = A.new
aObject.start

The problem is that since there is no :join call on @mainThread, it is killed (and hence oneThread, and twoThread as well) once control ends in :start. This is perfectly valid, of course, but I would like @mainThread to stay alive after control in :start ends. Is there any way to do this? Thanks

Nate

Nate Smith wrote:

Hello everyone,

I'm trying to keep a thread alive after exiting a method. The
pseudo-code is as follows:

class A
    
    def start
        @mainThread = Thread.new {
            oneThread = Thread.new {
                # do some stuff
            }
            twoThread = Thread.new {
                # do some other stuff
            }
            oneThread.join
            twoThread.join
        }
    end
end

aObject = A.new
aObject.start

The problem is that since there is no :join call on @mainThread, it is
killed (and hence oneThread, and twoThread as well) once control ends in
:start. This is perfectly valid, of course, but I would like @mainThread
to stay alive after control in :start ends. Is there any way to do this?
Thanks

Nate

Is you program exiting after aObject.start? Then maybe you want to do
@mainThread.join at that point?

The @mainThread should still be alive, until the program exits, unless
it has suffered an exception.

Do you have Thread.abort_on_exception = true?

···

--
      vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407