How can I avoid the console output when assigning a value to a variable in Ruby

StackOverflow https://stackoverflow.com/questions/20731930

  •  20-09-2022
  •  | 
  •  

Question

Is it possible to escape that effect when assigning to a value:

irb(main):584:0>a = true
=>true
irb(main):584:0>

I have a code that has lots of assignings and when I am trying to test it I can not see the result because of all these returned values:

true
false
true
false
true
true
..
Was it helpful?

Solution

You can start the irb or console attaching the --noecho option.

$ irb --noecho
2.0.0p353 :001 > true
2.0.0p353 :002 > 

Otherwise, if the console was started by another process, simply set conf.echo = false

$ irb 
2.0.0p353 :001 > true
 => true 
2.0.0p353 :002 > conf.echo = false
2.0.0p353 :004 > true
2.0.0p353 :005 > 

OTHER TIPS

Stick a semi-colon behind the command and it doesn't print, works for both pry and irb

PRY

[1] pry(main)> a = true
=> true
[2] pry(main)> a = true;
[3] pry(main)>

IRB

2.0.0p247 :001 > a = true
 => true
2.0.0p247 :002 > a = true;
2.0.0p247 :003 >

None of the answers above could work for my setup so I ended up just making a little helper and declared things out of scope. Quick and dirty, but gets the job done:

def quiet(&block)
  yield
  nil
end

foo = nil
quiet { foo = 'long' * 1000 }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top