রেল কনসোলে কীভাবে সুন্দর ফর্ম্যাটিং পাবেন


127

সুন্দর দেখতে দেখতে আমি এরকম কিছু পেতে চাই:

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

এটি কাজ করে না:

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

এবং উভয়ই এটি করে না:

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

থটস?

উত্তর:


255

yপদ্ধতি একটি সহজ উপায় কিছু প্রশংসনীয় YAML আউটপুট পেতে হয়।

y ProductColor.all

ধরে নিচ্ছি আপনি আছেন script/console

জর্ডানপিগ মন্তব্য হিসাবে, এই উত্তরটি পুরানো। Ails.২++ রেলের জন্য yপদ্ধতিটি কাজ করার আগে আপনাকে নিম্নলিখিত কোডটি কার্যকর করতে হবে :

YAML::ENGINE.yamler = 'syck'

থেকে রুবি-দস্তাবেজ

পুরানো রুবি সংস্করণে, যেমন। <= 1.9, স্যাক এখনও সরবরাহ করা হয়েছে, তবে এটি রুবি ২.০.০ এর প্রকাশের সাথে সম্পূর্ণ অপসারণ করা হয়েছিল।

রেল 4 / রুবি 2 এর জন্য আপনি কেবল ব্যবহার করতে পারেন

puts object.to_yaml

5
এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত যেহেতু এটি অন্তর্নির্মিত হয়েছে, অবিলম্বে ব্যবহার করা যেতে পারে এবং সর্বোপরি সহজ।
বটবট

15
এই উত্তরটি পুরানো। দেখুন: stackoverflow.com/questions/11571801/… এই কাজটি করতে, আপনাকে প্রথমে সম্পাদন করতে হবে YAML::ENGINE.yamler = 'syck'
jordanpg

5
এটি এখন YAML :: ENGINE.yamler = 'psych'
jumpa

এটি রায়ানব এর সাথে অনুরূপ >> প্রোডাক্টল কালার.এল >> y _
দীপক লামিছনে

1
@ বটবট যেমন উপরে বলেছিলেন, এটি সর্বোত্তম উত্তর যেহেতু এটি এমন পরিস্থিতিতে প্রযোজ্য যেখানে আপনি কোনও .irbrc, অন্যান্য কনসোল সরঞ্জামগুলি বা কনসোলের অন্যান্য কনফিগারেশনের অ্যাক্সেস রাখেন না (যেমন, কোনও প্রোডাকশন কনটেইনার / সার্ভারের সীমাবদ্ধ অ্যাক্সেসের সাথে চুক্তিবদ্ধ দেব হওয়া) )
টড

97

আপনি চেষ্টা করা উচিত hirb । এটি রুবি কনসোলে আইটেমগুলি সুন্দর বিন্যাসে তৈরি করা একটি মণি। আপনার স্ক্রিপ্ট / কনসোল সেশনটি এর মতো দেখতে পাবেন:

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

আপনি এর হোমপেজে হিরব সম্পর্কে আরও শিখতে পারেন ।


3
রায়ানবের উত্তরটি মূলত আমি যা খুঁজছিলাম তা হ'ল, তবে এটি গ্রহণ করা ভাল নয়।
টম লেহম্যান

7
মূল প্রশ্নের কোনও উত্তর না পেয়েও এটি নির্দেশ করতে পারে যে আপনি আপনার ~ / .irbrc এ হিরব স্টাফ যুক্ত করতে পারেন যাতে আপনার প্রতিবার এটি প্রয়োজন হয় না এবং সক্ষম করতে হয় না।
জর্ডেলভার

1
এই রত্নটি এখন পুরানো।
অমৃত ধুনগনা

আউটপুটটির কলামগুলি "সহজেই" সাজানোর কোনও উপায় আছে কি? আমি কলাম আইডিটিকে প্রথম এবং আপডেট_এটি এবং শেষের দিকে তৈরি করতে বাধ্য করতে চাই (প্রথম স্থানান্তরের পরে যদি আপনি কলামগুলি যোগ করেন তবে আপডেট_এট ও তৈরি_এর কলামগুলি শেষ হবে না)
মিঃ যোশিজি

27

আপনি যদি কোনও বস্তু ইনডেন্ট করতে চান তবে দুর্দান্ত প্রিন্টটিও দুর্দান্ত । কিছুটা এইরকম:

$ 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
    }
]

আপনার আইআরবি / রেলস / পিসি কনসোলের সাথে এটি ডিফল্টরূপে সংহত করতে আপনার ~/.irbrcবা ~/.pryrcফাইলটিতে যুক্ত করুন:

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

1
আমি কি এই রত্নটি 4 বা 5 এর সাথে ব্যবহার করতে পারি ?? আমি গিথুব পৃষ্ঠায় নিম্নলিখিত নোটটি পেয়েছি: দ্রষ্টব্য: অসাধারণ_প্রিন্ট v1.2.0 v1.0 এর পূর্বে রুবি সংস্করণ এবং v3.0 এর পূর্বে রেল সংস্করণগুলিকে সমর্থন করে এমন সর্বশেষ প্রকাশ। আসন্ন অসাধারণ_প্রিন্ট v2.0 এর জন্য রুবি v1.9.3 বা তার পরে এবং তারগুলি v3.0 বা তার পরে প্রয়োজন। এর অর্থ কি এই মণিটি এই সংস্করণগুলির সাথে পুরানো এবং সংঘাত সৃষ্টি করে ??
এলটিদেব

12
>> puts ProductColor.all.to_yaml

কেবল সূক্ষ্ম কাজ করে!

সূত্র: https://stackoverflow.com/a/4830096


এটি দুর্দান্ত কাজ করে! আমি অন্য শীর্ষে ভোট দেওয়া উত্তরগুলি কাজের পক্ষে পেতে পারি না ... আমি অনুমান করি কারণ আমি অ্যাক্টিভোর্সোর্স (API রিসোর্স) ব্যবহার করছি
ক্রিম্বো

11

আপনি এটি ব্যবহার করতে পারেন তাও খেয়াল করা যেতে পারে:

j ProductColor.all.inspect

যামলের চেয়ে জেসন ফর্ম্যাটে আউটপুট দিতে


এটি JSON / রুবির সংস্করণের উপর নির্ভর করে ব্যর্থ হতে পারে এবং এমন পরিবেশে সুন্দর ফর্ম্যাটিংয়ের প্রয়োজন হতে পারে যেখানে কোনও ক্যান্টের কাছে সুন্দর জিনিস থাকতে পারে না
টড

3
এই উত্থাপন ত্রুটি: জেএসওএন :: জেনারেটর এরিয়ার: কেবল জেএসএন বস্তু বা অ্যারেগুলির প্রজন্মের অনুমতি দেওয়া হয়েছে
হাসান আকরাম

8

হাই যদি আপনি আপনার স্ক্রিপ্ট / কনসোল এ এটি চেষ্টা করতে পারেন

>> y ProductColor.all

তোমার জন্য কাজ করছি না

এটা চেষ্টা কর:

>> require 'yaml'

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

তারপর

>> y ProductColor.all

7

এটির কাজ করতে আমার কিছুটা সমস্যা হয়েছিল তাই আমি আমার দুটি সেন্টকে দারুণ_প্রিন্টে যুক্ত করব এটি আপনার জেমফাইলে যুক্ত করুন, পছন্দমতো :development

gem 'awesome_print', require: 'ap'

তারপরে

rails console

আপনি করতে পারেন

> ap Model.all এটাই. তবে আপনি যোগ করতে পারেন

require "awesome_print"
AwesomePrint.irb!

আপনার ~ / .irbrc এ, আপনি কনসোলটি খোলার যেকোন সময় এইভাবে দুর্দান্ত_প্রিন্টের প্রয়োজন হবে এবং আপনি কেবল তা করতে পারেন

Model.all এপি টাইপ করার প্রয়োজন ছাড়াই


6

একদল অবজেক্টের জন্য আপনি নিম্নলিখিতগুলিও চেষ্টা করতে পারেন

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

এটি আপনাকে অনেক সুন্দর আউটপুট দেবে, যেমন

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

to_yamlঅবজেক্টের চেয়ে বৈশিষ্ট্যগুলিতে কল করা আপনাকে আউটপুটে অবজেক্টের সম্পূর্ণ সামগ্রী দেখতে বাঁচায়

বা puts Object.last.attributes.to_yamlএকক বস্তুর জন্য

শর্টহ্যান্ড এছাড়াও উপলব্ধ: y Object.last.attributes


6

আমি মনে করি এই সমাধানটি সবচেয়ে সঠিক। আপনার এটি চেষ্টা করা উচিত:

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

এটি আপনাকে ওয়াইএমএল ফর্ম্যাটের সাথে তুলনা করে একটি দুর্দান্ত সুন্দর আউটপুট দেবে:

[
  {
    "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"
  }
]

5

ব্যবহার irbtoolsরত্ন ।

এটি স্বয়ংক্রিয়ভাবে কনসোল আউটপুটকে ফর্ম্যাট করবে এবং আপনি প্রচুর দুর্দান্ত বৈশিষ্ট্য পাবেন।


নিস! তবে আমি এটি অ্যাক্টিভ রিসোর্স সামগ্রীটিকে ফর্ম্যাট করতে পারি না ... যতক্ষণ না আমি কিছু ভুল করি
ক্রিম্বো

4

আপনার পছন্দসই জিনিসটি ফিরিয়ে দেওয়ার জন্য আপনি প্রোডাক্ট কালারের পরিদর্শন পদ্ধতিটি সংজ্ঞায়িত করতে চাইতে পারেন। উদাহরণ স্বরূপ:

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

যার পরে প্রোডাক্ট কালার.এল এর ফলাফল [<1 - সাদা (সাদা)>, ...] এর মতো কিছু হিসাবে প্রদর্শিত হবে as অবশ্যই আপনার পরিদর্শন পদ্ধতিটি আপনার প্রয়োজনের সাথে সামঞ্জস্য করা উচিত, যাতে এটি আপনার পছন্দ মতো একটি স্টাইলে আপনার প্রয়োজনীয় সমস্ত তথ্য প্রদর্শন করে।

সম্পাদনা করুন: এছাড়াও যদি সমস্যাটি আউটপুটে লাইন ব্রেকগুলির অভাব হয় তবে আপনি চেষ্টা করতে পারেন

require 'pp'
pp ProductColor.all

যেখানে উপযুক্ত সেখানে লাইনব্রেকগুলি প্রবেশ করানো উচিত


বাস্তবে বিষয়টি require 'pp'সম্ভব নয় rails console --sandboxfalseযখন প্রয়োজনের চেষ্টা করি তখন কোনও কারণে আমি পাই pp। ওহো! মনে হচ্ছে ppএটি ইতিমধ্যে ভিতরে ডিফল্টরূপে প্রয়োজনীয় rails console। আমি সবেমাত্র করেছি pp Model.connection_handlerএবং খুব সুন্দর মুদ্রিত আউটপুট পেয়েছি। ধন্যবাদ।
সবুজ

@ গ্রিন যদি requireফিরে আসে তবে এর falseঅর্থ হ'ল ফাইলটি ইতিমধ্যে লোড হয়ে গেছে।
sepp2k

কেন inspectশুধু প্রদর্শিত যখন প্রদর্শিত হয় না ProductColor.all?
আর্নল্ড রোয়া

3

আশ্চর্যজনক মুদ্রণ ব্যবহারের জন্য অলটার লাগোর পরামর্শগুলিতে যুক্ত করতে, আপনি যদি আপনার প্রকল্পের জেমফাইলে সন্ত্রস্ত_প্রিন্ট রত্ন যোগ করতে / না করতে / না করতে চান তবে এটি করুন:

gem install awesome_print

~ / .Irb.rc সম্পাদনা করুন এবং এটি যুক্ত করুন:

$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'

(অবশ্যই পথ এবং সংস্করণ সঠিক কিনা তা নিশ্চিত করে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.