web-dev-qa-db-fra.com

Rendre la sortie de la console Rails un peu plus jolie

une sortie de la console Rails ressemble à ceci:

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">]

Je me demandais s'il y avait une commande qui pourrait la rendre plus facile à lire? Par exemple, la console MongoDB contenait une commande .pretty qui formatait la sortie un peu plus facilement. Mais pas sûr s'il y a quelque chose de similaire dans Rails ou pas.

29
Bohn

Aussi, vous pouvez utiliser ce bijou incroyable: 

https://github.com/cldwalker/hirb

10
Leszek Andrukanis

Sténographie un peu plus élégante:

y User.all
60
valk

Si vous ne voulez pas utiliser un joyau, voici la version à faible loyer:

 puts User.all.to_yaml
28
Ben

J'ai utilisé pp. Le pp signifie "jolie impression". Aucune gemme requise.

Essayez de faire ceci sur la console Rails:

pp User.all

Vous obtiendrez chaque attribut et sa valeur dans l’enregistrement sous forme de ligne si vous faites simplement User.all.

Voici la documentation: 

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

J'utilise Rails 5.1.3 et Ruby 2.4.1p111 et il est venu déjà installé dans mon projet. Si cela ne fonctionne pas, j'imagine que vous devez faire require 'pp'. J'espère que cela vous aidera.

9
myhouse

Vous pouvez essayer le bijou awesome_print: https://github.com/michaeldv/awesome_print

Une fois installé, vous pouvez imprimer n'importe quel objet en utilisant:

ap User.all
5
Anthony Alberto

Voici quelques options

format yaml

y your_code

awesome_print

gem install awesome_print

Puis dans irb ou pry

require 'awesome_print'
ap your_code
2
jasonleonhard

Il existe un bijou génial appelé Jazz Hands . Inclut les améliorations basées sur les leviers, hirb et awesome_print dans la console Rails.

P.S. Vous voudrez peut-être utiliser fork Jazz Fingers pour le rendre compatible avec Ruby 2.1.2

2
Derrick Mar

Utilisez pry

Sans levier:

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> 

Avec levier:

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>
1
Mirror318