awesome-print / awesome_print

Pretty print your Ruby objects with style -- in full color and with proper indentation
http://github.com/michaeldv/awesome_print
MIT License
4.07k stars 454 forks source link

Array#uniq is not working on pry with `AwesomePrint.pry!` #404

Closed hanasuke closed 3 years ago

hanasuke commented 3 years ago

When I executed pry with AwesomePrint.pry! on Ruby3.0.0, pry raised output error. stack trace is the below

[1] pry(main)> [1,2,3].uniq
(pry) output error: #<ArgumentError: tried to create Proc object without a block>
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113:in `new'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113:in `indented'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:51:in `block (2 levels) in generate_printable_array'
<internal:kernel>:90:in `tap'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:50:in `block in generate_printable_array'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:49:in `map'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:49:in `with_index'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:49:in `generate_printable_array'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:40:in `multiline_array'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:32:in `simple_array'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/array_formatter.rb:20:in `format'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatter.rb:71:in `awesome_array'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatter.rb:26:in `format'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:115:in `unnested'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:74:in `awesome'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/core_ext/kernel.rb:10:in `ai'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/custom_defaults.rb:45:in `block in pry!'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:302:in `show_result'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:672:in `block in handle_line'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_class.rb:382:in `critical_section'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:671:in `handle_line'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in `catch'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in `block in eval'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in `catch'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in `eval'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:77:in `block in repl'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:67:in `loop'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:67:in `repl'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:38:in `block in start'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/input_lock.rb:61:in `__with_ownership'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/input_lock.rb:78:in `with_ownership'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:38:in `start'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/repl.rb:15:in `start'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/pry_class.rb:191:in `start'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/lib/pry/cli.rb:119:in `start'
/Users/naosuke/.asdf/installs/ruby/3.0.0/lib/ruby/gems/3.0.0/gems/pry-0.13.1/bin/pry:13:in `<top (required)>'
/Users/naosuke/.asdf/installs/ruby/3.0.0/bin/pry:23:in `load'
/Users/naosuke/.asdf/installs/ruby/3.0.0/bin/pry:23:in `<main>'

I executed on Ruby2.7.1, it success to execute. (but some warning is displayed...)

[2] pry(main)> [1,2,3].uniq
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:63: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:63: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
/Users/naosuke/.asdf/installs/ruby/2.7.1/lib/ruby/gems/2.7.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:63: warning: Capturing the given block using Proc.new is deprecated; use `&block` instead
[
    [0] 1,
    [1] 2,
    [2] 3
]

Is this a bug of awesome-print? or is it an issue what Ruby3.0.0 is not supported?

BryanH commented 3 years ago

I'll take a look!

ketiko commented 3 years ago

I have the same issue when trying to print any number of objects. Particularly ActiveRecord objects.

phuston commented 3 years ago

Running into the same issue.

ketiko commented 3 years ago

Version 1.9.2 seems to have fixed the issue for me.

BryanH commented 3 years ago

Closing, should be fixed. Please open a new issue if it comes back!