tags:

views:

76

answers:

2

Here's a little copy/paste from fxri. Why is this happening and how do I fix it? Ruby version is; ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] on 64 bit windows 7.

irb(main):334:0> pp "a"
NoMethodError: undefined method `<<' for #<FXIrb:0x6229524>
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:146:in `text'
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:198:in `group'
from ..../Ruby/lib/ruby/1.8/pp.rb:140:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/pp.rb:119:in `guard_inspect_key'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:60:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `each'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `pp'
from (irb):334
from :0

irb(main):335:0> a = {'a', 'b', 'c', 'd'}
=> {"a"=>"b", "c"=>"d"}
irb(main):336:0> a
=> {"a"=>"b", "c"=>"d"}
irb(main):337:0> pp a
NoMethodError: undefined method `<<' for #<FXIrb:0x6229524>
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:146:in `text'
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:198:in `group'
from ..../Ruby/lib/ruby/1.8/pp.rb:140:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/pp.rb:119:in `guard_inspect_key'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:60:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `each'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `pp'
from (irb):337
from :0

irb(main):338:0> ary = Array.new(5) {|i| Array.new(5) {|j| i*j } }
=> [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12], [0, 4, 8, 12, 16]]
irb(main):339:0> pp ary
NoMethodError: undefined method `<<' for #<FXIrb:0x6229524>
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:146:in `text'
from ..../Ruby/lib/ruby/1.8/prettyprint.rb:198:in `group'
from ..../Ruby/lib/ruby/1.8/pp.rb:140:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/pp.rb:119:in `guard_inspect_key'
from ..../Ruby/lib/ruby/1.8/PP.rb:77:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:60:in `pp'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `each'
from ..../Ruby/lib/ruby/1.8/PP.rb:59:in `pp'
from (irb):339
from :0
A: 

Try requiring explicitely pp

require "pp"

If this doesn't work, try to upgrade to ruby 1.8.7 or use another "pretty printer" such as awesome print

marcgg
Had already tried that (forgot to mention) and upgrade didn't change anything (ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] now).
pkauko
A: 

Try this:

def <<(text)
  print text
end

irb(main):011:0> pp [1,2]
[1, 2]
=> nil

ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

ngoozeff
Thanks, worked like a charm. Only downside is that I need to redo that each session (unless I learn how to hook it to loading of fxri), but that's no big deal. This seems to work in 1.8.7 also.
pkauko
@pkauko: look into .irbrceg http://blog.nicksieger.com/articles/2006/05/30/irbrc-on-windows
ngoozeff
Sweet, thanks again.
pkauko