Frage

Ich mag so etwas bekommen, um schön aussehen:

>> ProductColor.all
=> [#<ProductColor id: 1, name: "White", internal_name: "White", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 2, name: "Ivory", internal_name: "Ivory", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 3, name: "Blue", internal_name: "Light Blue", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 4, name: "Green", internal_name: "Green", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">]

Das funktioniert nicht:

>> ProductColor.all.inspect
=> "[#<ProductColor id: 1, name: \"White\", internal_name: \"White\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 2, name: \"Ivory\", internal_name: \"Ivory\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 3, name: \"Blue\", internal_name: \"Light Blue\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">, #<ProductColor id: 4, name: \"Green\", internal_name: \"Green\", created_at: \"2009-06-10 04:02:44\", updated_at: \"2009-06-10 04:02:44\">]"

Und ebenso wenig wie folgt aus:

>> ProductColor.all.to_yaml
=> "--- \n- !ruby/object:ProductColor \n  attributes: \n    name: White\n    created_at: 2009-06-10 04:02:44\n    updated_at: 2009-06-10 04:02:44\n    id: \"1\"\n    internal_name: White\n  attributes_cache: {}\n\n- !ruby/object:ProductColor \n  attributes: \n    name: Ivory\n    created_at: 2009-06-10 04:02:44\n    updated_at: 2009-06-10 04:02:44\n    id: \"2\"\n    internal_name: Ivory\n  attributes_cache: {}\n\n- !ruby/object:ProductColor \n  attributes: \n    name: Blue\n    created_at: 2009-06-10 04:02:44\n    updated_at: 2009-06-10 04:02:44\n    id: \"3\"\n    internal_name: Light Blue\n  attributes_cache: {}\n\n- !ruby/object:ProductColor \n  attributes: \n    name: Green\n    created_at: 2009-06-10 04:02:44\n    updated_at: 2009-06-10 04:02:44\n    id: \"4\"\n    internal_name: Green\n  attributes_cache: {}\n\n"

Die Gedanken?

War es hilfreich?

Lösung

Die y Methode ist eine praktische Möglichkeit, ein paar ziemlich YAML Ausgabe zu erhalten.

y ProductColor.all

Angenommen, Sie in script/console sind

Wie jordanpg kommentiert, diese Antwort ist veraltet. Für Rails 3.2+ müssen Sie den folgenden Code ausführen, bevor Sie die y Methode bekommen zu arbeiten:

YAML::ENGINE.yamler = 'syck'

Rubin-docs

  

Bei älteren Versionen von Ruby, das heißt. <= 1,9, wird Syck noch vorgesehen, es jedoch   vollständig mit der Veröffentlichung von Ruby 2.0.0 entfernt wurde.

Für Schienen 4 / Rubin 2 könnte man verwenden nur

puts object.to_yaml

Andere Tipps

Sie sollten versuchen, hirb . Es ist ein Juwel gemacht zu ziemlich Format Objekte in der Ruby-Konsole. Ihre Skript / Konsolensitzung würde wie folgt aussehen:

>> require 'hirb'
=> true
>> Hirb.enable
=> true
>> ProductColor.first
+----+-------+---------------+---------------------+---------------------+
| id | name  | internal_name | created_at          | updated_at          |
+----+-------+---------------+---------------------+---------------------+
| 1  | White | White         | 2009-06-10 04:02:44 | 2009-06-10 04:02:44 |
+----+-------+---------------+---------------------+---------------------+
1 row in set
=> true

Sie können mehr über hirb lernen an seinem Homepage .

ehrfürchtiger Druck schön ist auch, wenn Sie ein Objekt eingerückt werden sollen. So etwas wie:

$ rails console
rails> require "awesome_print"
rails> ap Account.all(:limit => 2)
[
    [0] #<Account:0x1033220b8> {
                     :id => 1,
                :user_id => 5,
            :assigned_to => 7,
                   :name => "Hayes-DuBuque",
                 :access => "Public",
                :website => "http://www.hayesdubuque.com",
        :toll_free_phone => "1-800-932-6571",
                  :phone => "(111)549-5002",
                    :fax => "(349)415-2266",
             :deleted_at => nil,
             :created_at => Sat, 06 Mar 2010 09:46:10 UTC +00:00,
             :updated_at => Sat, 06 Mar 2010 16:33:10 UTC +00:00,
                  :email => "info@hayesdubuque.com",
        :background_info => nil
    },
    [1] #<Account:0x103321ff0> {
                     :id => 2,
                :user_id => 4,
            :assigned_to => 4,
                   :name => "Ziemann-Streich",
                 :access => "Public",
                :website => "http://www.ziemannstreich.com",
        :toll_free_phone => "1-800-871-0619",
                  :phone => "(042)056-1534",
                    :fax => "(106)017-8792",
             :deleted_at => nil,
             :created_at => Tue, 09 Feb 2010 13:32:10 UTC +00:00,
             :updated_at => Tue, 09 Feb 2010 20:05:01 UTC +00:00,
                  :email => "info@ziemannstreich.com",
        :background_info => nil
    }
]

Um es zu integrieren standardmäßig mit irb / rails / hebeln Konsole, fügen Sie Ihren ~/.irbrc oder ~/.pryrc-Datei:

require "awesome_print"
AwesomePrint.irb! # just in .irbrc
AwesomePrint.pry! # just in .pryrc

Auch sei darauf hingewiesen, dass Sie verwenden können:

j ProductColor.all.inspect

zur Ausgabe im JSON-Format statt Yaml

>> puts ProductColor.all.to_yaml

Sie einfach funktioniert!

Quelle: https://stackoverflow.com/a/4830096

Hallo können Sie auch versuchen, diese in Ihrem Skript / Konsole, wenn

>> y ProductColor.all

nicht für Sie arbeiten.

Versuchen Sie folgendes:

>> require 'yaml'

>> YAML::ENGINE.yamler = 'syck'

und

>> y ProductColor.all

hatte ich einige Probleme damit es funktioniert, damit ich meine zwei Cent in den awesome_print fügen Sie diese zu Ihrer Gemfile, vorzugsweise in :development

gem 'awesome_print', require: 'ap'

dann in

rails console

Sie tun können,

> ap Model.all Das ist es. Sie können aber auch hinzufügen

require "awesome_print"
AwesomePrint.irb!

Ihren ~ / .irbrc, auf diese Weise awesome_print wird zu jeder Zeit erforderlich sein, die Konsole öffnen und Sie können einfach tun

Model.all ohne die Notwendigkeit der Eingabe ap

Mit irbtools gem.

Es wird die die Konsolenausgabe automatisch formatiert und Sie werden Tonnen von tollen Funktionen erhalten.

Sie möchten vielleicht ProductColor des inspizieren Methode zu definieren, etwas zurückzugeben, die Sie schön finden. Zum Beispiel:

def inspect
  "<#{id} - #{name} (#{internal_name})>"
end

Nach dem das Ergebnis der ProductColor.all wird als etwas zeigen, wie [<1 - Weiß (weiß)>, ...]. Natürlich sollten Sie das überprüfen Methode an Ihre Bedürfnisse anpassen, so dass es alle Informationen anzeigt, die Sie in einer Art benötigen, die Sie mögen.

Edit: auch wenn das Problem der fehlenden Zeilenumbrüche in der Ausgabe war, könnte man versuchen

require 'pp'
pp ProductColor.all

, welche sollten Zeilenumbrüche einfügen gegebenenfalls

So fügt Lago Vorschlag Altem AwesomePrint für die Verwendung, Wenn Sie nicht / nicht / nicht das awesome_print Juwel Ihres Projekts Gemfile hinzufügen möchten, dies tun:

gem install awesome_print

Bearbeiten ~ / .irb.rc und fügen Sie diese:

$LOAD_PATH << '/Users/your-user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib'

require 'awesome_print'

(Sicherstellen, dass der Pfad und die Version korrekt ist, natürlich)

Sie können auch die folgenden für eine Gruppe von Objekten versuchen

Object.all.map(&:attributes).to_yaml

Dies wird Ihnen viel schöner Ausgang, wie

---
id: 1
type: College
name: University of Texas
---
id: 2
type: College
name: University of California

aufrufen to_yaml auf Attribute, anstatt das Objekt selbst erspart Ihnen den gesamten Inhalt des Objekts in der Ausgabe sehen

oder puts Object.last.attributes.to_yaml für ein einzelnes Objekt

Stenografie ist auch verfügbar: y Object.last.attributes

Ich denke, diese Lösung die genaueste ist. Sie sollten versuchen, diese:

puts JSON.pretty_generate Entry.all.map(&:attributes)

Dies wird Ihnen eine super schöne Ausgabe vergleichen zu YAML Format:

[
  {
    "id": 44,
    "team_id": null,
    "member_id": 1000000,
    "match_id": 1,
    "created_at": "2019-04-09 15:53:14 +0900",
    "updated_at": "2019-04-09 15:53:14 +0900"
  },
  {
    "id": 45,
    "team_id": null,
    "member_id": 1000001,
    "match_id": 1,
    "created_at": "2019-04-09 15:53:36 +0900",
    "updated_at": "2019-04-09 15:53:36 +0900"
  },
  {
    "id": 46,
    "team_id": null,
    "member_id": 1000003,
    "match_id": 1,
    "created_at": "2019-04-09 15:56:40 +0900",
    "updated_at": "2019-04-09 15:56:40 +0900"
  },
  {
    "id": 47,
    "team_id": null,
    "member_id": 1000004,
    "match_id": 1,
    "created_at": "2019-04-09 15:56:48 +0900",
    "updated_at": "2019-04-09 15:56:48 +0900"
  }
]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top