【问题标题】:Making the rails console output a little more pretty使 rails 控制台输出更漂亮一点
【发布时间】:2013-01-16 21:31:21
【问题描述】:

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

我想知道是否有命令可以使其更易于阅读?例如,在 MongoDB 控制台中有一个 .pretty 命令,它对输出的格式设置更友好一些。但不确定 Rails 中是否有类似的东西。

【问题讨论】:

    标签: ruby-on-rails rails-activerecord


    【解决方案1】:

    更优雅的速记:

    y User.all
    

    【讨论】:

    • 这是迄今为止我发现的最简单的输出格式,也是最好的输出格式。
    • 哇!我不知道这一点,但它可以完成这项工作......并且可以在任何项目中使用,无需添加任何宝石(它是内核 AFAIK 的一部分)!完美,谢谢!
    • 正是我需要的。谢谢
    • 我不知道是不是只有我,但这比原来的问题还要糟糕。这不是将所有记录放在一起,而是每条记录大约有 50 行,其中大部分是无用的信息。
    • @SteveCarey 实际上,从 Rails v4 开始,我认为它可以打印所有内容。因此,如果这对您不起作用,请尝试:User.find_each { |u| y u.attributes }
    【解决方案2】:

    我一直在使用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'。 我希望这会有所帮助。

    【讨论】:

    • 这是我项目的最佳答案。 Yaml 格式的 ruby​​ 对象不是漂亮的打印。
    【解决方案3】:

    如果您不想使用 gem,这里是低价版本:

     puts User.all.to_yaml
    

    【讨论】:

    • 很好的建议,因为它不需要依赖项
    【解决方案4】:

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

    Awesome Print

    【讨论】:

      【解决方案5】:

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

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

      ap User.all
      

      【讨论】:

      • 对我来说不能很好地打印 ActiveRecord。不过,它确实可以打印其他容器。
      • @Anthony Alberto 在 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
      • @Lykos,这意味着你不能使用awesome_print 版本 2.0 当使用低于 3 的 Rails 版本时。你可以使用 awesome_print 与任何 Rails 版本,您只需要选择合适的awesome_print 版本来匹配: a) 如果您使用Rails 3、4 或5,您应该使用awesome_print v2.0。 b) 如果您使用的是 Rails 1 或 2,则必须使用 awesome_print v1.2
      【解决方案6】:

      这里有几个选项

      yaml 格式

      y your_code
      

      awesome_print

      gem install awesome_print
      

      然后在 irb 或 pry 中

      require 'awesome_print'
      ap your_code
      

      【讨论】:

        【解决方案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>
        

        【讨论】:

          【解决方案8】:

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

          附:您可能希望使用 fork Jazz Fingers 使其与 Ruby 2.1.2 兼容

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-09-05
            • 1970-01-01
            • 1970-01-01
            • 2013-08-13
            • 1970-01-01
            • 2012-04-20
            • 1970-01-01
            • 2015-11-29
            相关资源
            最近更新 更多