Pry上でgroongaコマンドを動かすgroonga-pry.rb
というのを作った。こんなことができる。
- Pryの機能が使える
- 行編集、ヒストリ機能、カラー表示
- その他いろいろ
-
groonga
コマンドの機能が使える- コマンドラインは同じ(そのまま
groonga
コマンドに渡している) - オプションに合わせたそれなりな補完ができる(……はず)
- コマンド出力をJSON処理する
- コマンドラインは同じ(そのまま
-
jq
コマンドで整形できる- 最後に実行した
groonga
コマンドの結果を整形して表示する -
jq
コマンドのフィルタの指定ができる
- 最後に実行した
groonga
コマンドの出力はJSON.parse
で処理する。(dump
を除く。) 処理して得られた値を_
に設定する。なお、もともとの出力であるテキストは_.to_s
で得られる。
実行例:
$ ./groonga-pry.rb intro.db
[1] groonga(main)> status
=> [[0, 1417874110.88637, 6.31809234619141e-05],
{"alloc_count"=>147,
"starttime"=>1417874108,
"uptime"=>2,
"version"=>"4.0.7",
"n_queries"=>0,
"cache_hit_rate"=>0.0,
"command_version"=>1,
"default_command_version"=>1,
"max_command_version"=>2}]
[2] groonga(main)> _[1]['alloc_count']
=> 147
[3] groonga(main)> _
=> 147
jq
コマンドには直接JSONテキストを与えることもできるが、特に指定しなければ最後に実行したgroonga
コマンドの出力を対象として処理を行う。
[4] groonga(main)> jq
[
[
0,
1417874110.88637,
6.31809234619141e-05
],
{
"alloc_count": 147,
"starttime": 1417874108,
"uptime": 2,
"version": "4.0.7",
"n_queries": 0,
"cache_hit_rate": 0,
"command_version": 1,
"default_command_version": 1,
"max_command_version": 2
}
]
[5] groonga(main)> jq .[1].alloc_count
147
jq
コマンドのオプションは指定できない。指定できたほうがいいのかも。
groonga-pry.rb
の設定は~/.groonga-pryrc
で行う。~/.pryrc
ではない。ヒストリも~/.groonga-pry_history
とpryとは別になるようにしている。
作りながらRroongaで実装したほうが良いかもと少し考えたんだけど、裏でgroonga
コマンドを動かす形にもそれなりに意味はありそうなのでそのまま突き進んだ。こう、なんというか、Pryの勉強に、なった?