如何在Rails控制台中自行打印数组的每个元素?

Chl*_*loe 8 ruby ruby-on-rails rails-console

当我运行Rails控制台时,如何在自己的行上显示每个项目?代替

> Post.all
=> #<ActiveRecord::Relation [#<Post id: 1, title: "Post #0", comment: nil, link: "http://yahoo.com", user_id: 1, created_at: "2013-09-30 02:29:28", updated_at: "2013-09-30 02:29:28">, #<Post id: 2, title: "Post #1", comment: nil,...
Run Code Online (Sandbox Code Playgroud)

它会显示为

> Post.all
=> #<ActiveRecord::Relation [
#<Post id: 1, title: "Post #0", comment: nil, link: "http://yahoo.com", user_id: 1, created_at: "2013-09-30 02:29:28", updated_at: "2013-09-30 02:29:28">, 
#<Post id: 2, title: "Post #1", comment: nil,...
Run Code Online (Sandbox Code Playgroud)

xPerl调试器类似.我试过了

Post.all.each {| E | e.inspect +"\n"}

但这只会让情况变得更糟,并不是很方便.

我看过Ruby on Rails:针对variable.hash_set.inspect的漂亮打印......有没有办法在控制台中打印漂亮的.inpsect?https://github.com/michaeldv/awesome_print

但这似乎不起作用

irb(main):005:0> require "awesome_print"
=> false
irb(main):006:0> ap Post.all
#<ActiveRecord::Relation [#<Post id: 1, title: "Post #0",
Run Code Online (Sandbox Code Playgroud)

Sto*_*oic 15

尝试:

Post.all.each {|e| puts e.inspect }
Run Code Online (Sandbox Code Playgroud)

这里需要注意的是,该puts函数会在语句后自动添加换行符,如果您改为使用print它,则其运行方式与最后puts没有换行符的方式相似.


如果您使用的是awesome_print,请尝试:

ap Post.all.to_a
Run Code Online (Sandbox Code Playgroud)

此外,当您发出第一个命令时,输出将在结尾重复(根据您的注释)以显示当前表达式的输出.您可以通过;在命令末尾附加(分号)来抑制它,如下所示:

Post.all.each { |e| puts e.inspect };
Run Code Online (Sandbox Code Playgroud)

  • 分号技巧似乎不适用于Rails 4.它似乎忽略了整个语句.但这有效:`Post.all.each {| e | put e.inspect}; 1`在最后打印1. (2认同)

vee*_*vee 7

尝试:

> puts Post.all.map(&:inspect).join("\n")
Run Code Online (Sandbox Code Playgroud)