Home » DB » Hirb でテーブルの中身を表形式で出力 ruby on rails

Hirb でテーブルの中身を表形式で出力 ruby on rails

環境

  • CentOS
  • ruby 2.4.1
  • ruby on rails 5.1.3

説明

Hirbは、コンソールアプリケーション用のミニビューフレームワークを提供し、ripl(irb)のデフォルトの検査出力を改善するために使用します。オブジェクトまたはオブジェクトの配列が与えられた場合、hirbはオブジェクトのクラスおよび/または祖先に基づいてビューをレンダリングします。Hirbはヘルパークラスの形で再利用可能なビューを提供します。Hirb :: Helpers :: TableとHirb :: Helpers :: Treeの2つの主要ヘルパーは、ASCIIテーブルとツリーを生成するためのいくつかのオプションを提供します。Hirb :: Helpers :: AutoTableを使用すると、hirbには、RailsのActiveRecord :: Baseという少なくとも10の一般的なデータベースの宝石についての有用なデフォルトのビューがあります。ビュー以外に、hirbはスマートページャーとコンソールメニューを提供します。スマートページャは、出力が現在の画面サイズを超えたときにのみ表示されます。メニューは2次元メニューを提供するためにテーブルと共に使用されます。

ターミナルで rails c (rails console の省略形) を使って、データベースを出力する場合に見にくいので、

Hirb gemを使って表形式での出力で見やすくしていきます。

Gemfile に追記していきます

gem 'hirb'         # モデルの出力結果を表形式で表示するGem
gem 'hirb-unicode' # 全角のUnicode文字を使用する人は導入してください 

bundle でインストールしましょう

Hirb を有効にしてない場合は下記のように整形がされていないので見ずらいです。

irb(main):001:0> Post.all
  Post Load (1.9ms)  SELECT  "posts".* FROM "posts" LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Post id: 1, title: "タイトル:0", text: "テキスト0", created_at: "2017-08-20 15:16:24", updated_at: "2017-08-20 15:16:24">, #<Post id: 2, title: "タイトル:1", text: "テキスト1", created_at: "2017-08-20 15:16:24", updated_at: "2017-08-20 15:16:24">, #<Post id: 3, title: "タイトル:2", text: "テキスト2", created_at: "2017-08-20 15:16:24", updated_at: "2017-08-20 15:16:24">, #<Post id: 4, title: "タイトル:3", text: "テキスト3", created_at: "2017-08-20 15:16:24", updated_at: "2017-08-20 15:16:24">, #<Post id: 5, title: "タイトル:4", text: "テキスト4", created_at: "2017-08-20 15:16:25", updated_at: "2017-08-20 15:16:25">]>

では Hirb を有効にしてデータベースの中身を表出力して見やすくしていきます

irb(main):002:0> Hirb.enable
=> true

true の返り値が帰ってきた場合は有効になってます。
では実際にどうなっているか確認してみます。

irb(main):003:0> Post.all
  Post Load (8.1ms)  SELECT "posts".* FROM "posts"
+----+------------+-----------+-------------------------+-------------------------+
| id | title      | text      | created_at              | updated_at              |
+----+------------+-----------+-------------------------+-------------------------+
| 1  | タイトル:0 | テキスト0 | 2017-08-20 15:16:24 UTC | 2017-08-20 15:16:24 UTC |
| 2  | タイトル:1 | テキスト1 | 2017-08-20 15:16:24 UTC | 2017-08-20 15:16:24 UTC |
| 3  | タイトル:2 | テキスト2 | 2017-08-20 15:16:24 UTC | 2017-08-20 15:16:24 UTC |
| 4  | タイトル:3 | テキスト3 | 2017-08-20 15:16:24 UTC | 2017-08-20 15:16:24 UTC |
| 5  | タイトル:4 | テキスト4 | 2017-08-20 15:16:25 UTC | 2017-08-20 15:16:25 UTC |
+----+------------+-----------+-------------------------+-------------------------+
5 rows in set

無効にしたい場合は下記のようにすれば元の仕様に戻ります。

irb(main):007:0> Hirb.disable
=> false

false の返り値が帰ってきた場合は無効になってます。

※ nil が返り値として帰ってきた場合は実行済みです。

 

参考文献


, , , ,

コメントを残す

%d人のブロガーが「いいね」をつけました。