使rails控制台输出更漂亮

Boh*_*ohn 32 ruby-on-rails rails-activerecord

rails控制台输出如下所示:

User.all
=> [#<User id: 1, name: "Michael Hartl", email: "mhartl@example.com",
created_at: "2011-12-05 00:57:46", updated_at: "2011-12-05 00:57:46">,
#<User id: 2, name: "A Nother", email: "another@example.org", created_at:
"2011-12-05 01:05:24", updated_at: "2011-12-05 01:05:24">]
Run Code Online (Sandbox Code Playgroud)

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

val*_*alk 65

更优雅的速记:

y User.all
Run Code Online (Sandbox Code Playgroud)

  • 哇 !我不知道这一点,但是它可以完成工作……并且可以在任何项目中工作,无需添加任何宝石(它是内核AFAIK的一部分)!很好,谢谢 ! (2认同)
  • 我不知道这是不是我,但这比原来的问题还要糟糕.而不是将所有记录聚集在一起,这给了我大约50行每条记录的大多数无用的信息. (2认同)
  • @SteveCarey 事实上,从 Rails v4 开始,我认为它会打印所有内容。因此,如果这对您不起作用,请尝试:`User.find_each { |u| y u.属性}`。 (2认同)

小智 29

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

 puts User.all.to_yaml
Run Code Online (Sandbox Code Playgroud)


myh*_*use 13

我一直在用pp.pp代表"漂亮的印刷品".不需要宝石.

在rails控制台上尝试这样做:

pp User.all
Run Code Online (Sandbox Code Playgroud)

如果您只是执行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'.我希望这有帮助.

  • 这是我的项目的最佳答案。Yaml 格式的 ruby​​ 对象打印得不漂亮。 (2认同)

Les*_*nis 10

你也可以使用这个令人难以置信的宝石:

https://github.com/cldwalker/hirb


Ant*_*rto 6

您可以尝试使用awesome_print gem:https: //github.com/michaeldv/awesome_print

安装完成后,您可以使用以下方法打印任何对象:

ap User.all
Run Code Online (Sandbox Code Playgroud)


jas*_*ard 5

这里有几个选项

yaml 格式

y your_code
Run Code Online (Sandbox Code Playgroud)

真棒_打印

gem install awesome_print
Run Code Online (Sandbox Code Playgroud)

然后在 irb 或 pry

require 'awesome_print'
ap your_code
Run Code Online (Sandbox Code Playgroud)


Mir*_*318 5

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> 
Run Code Online (Sandbox Code Playgroud)

用撬:

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>
Run Code Online (Sandbox Code Playgroud)