0

データベースから情報を取得するスクリプトがあり、結果をファイルに書き出す必要があります。取得プロセス中に、きれいな形式で表示したい列ヘッダーとデータを取得します。これは、私がそれをどのように見せる必要があるかの例です:

user_name             name                          num_logins   
email_1@yahoo.com     Beachwood                     2            
email_2@yahoo.com     Beachwood                     2             
email_3@yahoo.com     Beachwood                     2             
email_4@yahoo.com     Beachwood                     2             
email_55@yahoo.com    Community Internal Medicine   6             

特定の形式でレポート/ファイルを作成するのは初めてなので、助けていただければ幸いです。

4

4 に答える 4

2

Hirb gemは良い出発点になります。これは通常、IRB または Rail のコンソールの使用に関連付けられていますが、他の使用のためにそれを覆すことができないと言うものは何もありません。

通常、ASCII ボーダーで作成されたテーブルをラップします。

+--------------------+-------------------------------- --------------+
| | ユーザー名 | 名前 | num_logins |
+--------------------+-------------------------------- --------------+
| | email_1@yahoo.com | ビーチウッド | 2 |
| | email_2@yahoo.com | ビーチウッド | 2 |
| | email_3@yahoo.com | ビーチウッド | 2 |
| | email_4@yahoo.com | ビーチウッド | 2 |
| | email_55@yahoo.com | 地域内科 | 6 |
+--------------------+-------------------------------- --------------+

しかし、少しgsub愛情を加えることで、あなたが望むようにドレスアップすることができます:

values = [
  [ 'user_name',          'name',      'num_logins'          ],
  [ 'email_1@yahoo.com',  'Beachwood', '2'                   ],
  [ 'email_2@yahoo.com',  'Beachwood', '2'                   ],
  [ 'email_3@yahoo.com',  'Beachwood', '2'                   ],
  [ 'email_4@yahoo.com',  'Beachwood', '2'                   ],
  [ 'email_55@yahoo.com', 'Community Internal Medicine', '6' ],
]
puts Hirb::Helpers::AutoTable.render(
  values,
  :headers => values.shift,
  :description => false
).gsub(/^[+-]+\n?/, '').gsub('|', ' ')

次のようになります。

  user_name 名前 num_logins  
  email_1@yahoo.com ビーチウッド 2           
  email_2@yahoo.com ビーチウッド 2           
  email_3@yahoo.com ビーチウッド 2           
  email_4@yahoo.com ビーチウッド 2           
  email_55@yahoo.com 地域内科 6           

Hirb に渡す前に配列のヘッダー行をポップオフするか、別の配列から提供することができます。:headersその場合はオプションを変更してください。

于 2013-01-18T17:21:44.593 に答える
1

printf同じ名前の C 関数に非常によく似た ruby​​ メソッドを調べる必要があります。印刷するすべての値のフィールド幅と配置を指定できます。

printf "%20d %20d\n", 334, 44
于 2013-01-18T16:17:04.500 に答える
0

また、私の table_print gem を試すこともできます。非常に柔軟ですが、セットアップや構成はほとんど必要ありませんhttp://github.com/arches/table_print

于 2013-06-17T15:22:33.473 に答える
0

テーブルをどれだけ派手にしたいかによっては、これにterminal-tableなどの gem を使用できる場合があります。

Github の README には記載されていませんが、このプル リクエストは、テーブルの境界線を無効にする方法を示しています。

Terminal::Table::X = ""
Terminal::Table::Y = ""
Terminal::Table::I = ""
于 2013-01-18T16:20:12.433 に答える