使导轨控制台输出更漂亮一些

Making the rails console output a little more pretty

提问人:Bohn 提问时间:1/17/2013 最后编辑:tereškoBohn 更新时间:8/31/2022 访问量:30975

问:

Rails 控制台的输出如下所示:

User.all
=> [#<User id: 1, name: "Michael Hartl", email: "[email protected]",
created_at: "2011-12-05 00:57:46", updated_at: "2011-12-05 00:57:46">,
#<User id: 2, name: "A Nother", email: "[email protected]", created_at:
"2011-12-05 01:05:24", updated_at: "2011-12-05 01:05:24">]

我想知道是否有命令可以使它更容易阅读?例如,MongoDB 控制台中有一个 .pretty 命令,该命令将输出格式化得更加亲眼。但不确定 Rails 中是否有类似的东西。

Ruby-on-Rails Rails-ActiveRecord

评论


答:

8赞 Anthony Alberto 1/17/2013 #1

你可以试试awesome_print宝石:https://github.com/michaeldv/awesome_print

安装后,您可以使用以下命令漂亮地打印任何对象:

ap User.all

评论

0赞 CouchDeveloper 9/12/2013
没有为我打印 ActiveRecord。不过,它确实可以很好地打印其他容器。
0赞 ltdev 2/6/2017
@Anthony 阿尔贝托 在 github 页面 github.com/awesome-print/awesome_print#awesome-print 它说: 注意:awesome_print v1.2.0 是支持 v1.9.3 之前的 Ruby 版本和 v3.0 之前的 Rails 版本的最后一个版本。即将推出的 awesome_print v2.0 将需要 Ruby v1.9.3 或更高版本以及 Rails v3.0 或更高版本。这意味着我不能在 Rails 4 或 5 中使用?awesome_print
0赞 Finn 1/7/2018
@Lykos,这意味着当使用低于 3 的 Rails 版本时,你不能使用 2.0 版本。你可以与任何 Rails 版本一起使用,你只需要选择合适的版本来匹配: a) 如果你使用的是 Rails 3、4 或 5,你应该使用 .b) 如果您使用的是 Rails 1 或 2,则必须使用 .awesome_printawesome_printawesome_printawesome_print v2.0awesome_print v1.2
0赞 Daniel Nalbach 10/21/2019
awesome_print v1.8.0 似乎是最新的,对我来说,它与 Rails 5.2.3 配合得很好,包括如上所述的 User.all
11赞 Leszek Andrukanis 1/17/2013 #2

您也可以使用这颗不可思议的宝石:

令人敬畏的印刷品

30赞 Ben 1/17/2013 #3

如果您不想使用宝石,这里是低租金版本:

 puts User.all.to_yaml

评论

0赞 user12121234 7/24/2015
很好的建议,因为它不需要依赖项
76赞 valk 3/19/2014 #4

更优雅的速记:

y User.all

评论

1赞 Eli Gassert 2/16/2015
这是迄今为止我发现的最简单的格式,也是最好的输出格式。
2赞 gfd 10/6/2015
哇!我不知道这个,但它可以完成这项工作......并且适用于任何项目,无需添加 gem(它是内核 AFAIK 的一部分)!!完美,谢谢!
1赞 jgrant 11/29/2016
正是我需要的。谢谢
4赞 Steve Carey 5/12/2017
我不知道是不是只有我一个人,但这比原来的问题还要糟糕。而不是将所有记录捆绑在一起,这给了我每条记录大约 50 行,其中大部分是无用的信息。
2赞 valk 5/13/2017
@SteveCarey 事实上,从 Rails v4 开始,我认为它打印了所有内容。因此,如果这对您不起作用,请尝试: .User.find_each { |u| y u.attributes }
2赞 Derrick Mar 4/20/2015 #5

有一种很棒的宝石叫做 Jazz Hands。包括 rails 控制台中基于 pry 的增强功能、hirb 和 awesome_print。

P.S. 你可能想使用fork Jazz Fingers来使其与Ruby 2.1.2兼容

6赞 jasonleonhard 2/19/2016 #6

以下是一些选项

YAML 格式(无依赖项)

y your_code

awesome_print

gem install awesome_print

然后在 irb 或 pry

require 'awesome_print'
ap your_code
5赞 Mirror318 5/18/2017 #7

pry

不带撬:

2.3.1 :001 > SupplierTerm.first
  SupplierTerm Load (39.4ms)  SELECT  "supplier_terms".* FROM "supplier_terms" ORDER BY "supplier_terms"."id" ASC LIMIT $1  [["LIMIT", 1]]
 => #<SupplierTerm id: "1bc48081-402a-41d9-b6af-d783c28bb363", 
entity_id: "927b398f-2bbd-40cb-b668-eb284e26688d", uses_custom_terms: 
false, requires_credit_check: false, requires_identity_check: false, 
requires_guarantees: true, requires_trade_reference_check: true, 
minimum_guarantees: 1, minimum_trade_references: 1, trade_account_limit: 
20000, created_at: "2017-02-01 22:11:49", updated_at: "2017-02-01 
22:11:49", created_by_id: "2c314f8a-6d84-48c8-a963-75130e97f1a6", 
updated_by_id: "2c314f8a-6d84-48c8-a963-75130e97f1a6", questions: [], 
minimum_approvers: 1, excluded_sources: nil> 

带撬:

2.3.1 :002 > pry
[1] pry(main)> SupplierTerm.first
  SupplierTerm Load (0.4ms)  SELECT  "supplier_terms".* FROM "supplier_terms" ORDER BY "supplier_terms"."id" ASC LIMIT $1  [["LIMIT", 1]]
=> #<SupplierTerm:0x007fb4e1feff40
 id: "1bc48081-402a-41d9-b6af-d783c28bb363",
 entity_id: "927b398f-2bbd-40cb-b668-eb284e26688d",
 uses_custom_terms: false,
 requires_credit_check: false,
 requires_identity_check: false,
 requires_guarantees: true,
 requires_trade_reference_check: true,
 minimum_guarantees: 1,
 minimum_trade_references: 1,
 trade_account_limit: 20000,
 created_at: Wed, 01 Feb 2017 22:11:49 UTC +00:00,
 updated_at: Wed, 01 Feb 2017 22:11:49 UTC +00:00,
 created_by_id: "2c314f8a-6d84-48c8-a963-75130e97f1a6",
 updated_by_id: "2c314f8a-6d84-48c8-a963-75130e97f1a6",
 questions: [],
 minimum_approvers: 1,
 excluded_sources: nil>
45赞 myhouse 9/20/2017 #8

我一直在使用 .pp 代表“漂亮的印刷品”。无需宝石。pp

在 rails 控制台上,尝试执行以下操作:

pp User.all

如果只是执行 User.all,您将在记录中显示每个属性及其值,而不是它们的捆绑。

文档如下:

https://ruby-doc.org/stdlib-2.1.0/libdoc/pp/rdoc/PP.html

我正在使用 Rails 5.1.3 和 ruby 2.4.1p111,它已经安装在我的项目中。如果这不起作用,我想你必须这样做. 我希望这会有所帮助。require 'pp'

评论

2赞 workernode 6/2/2018
这是我项目的最佳答案。Yaml 格式的 ruby 对象不是漂亮的打印。