この記事は何?

rails console の劣化版みたいなやつの紹介です

それじゃ分かんないよ?

コマンドラインから ORM のメソッド投げたりできます。便利

ってか REPL って何?

シェルの中でインタラクティブにプログラムを実行する物体です。Perl では Reply ってのがおすすめです。

良くわからない人は以下の記事読んで、実際に使ってみるのが良いと思う。

で、どうやるの?

まずは必要な物体をインストールしましょう。Reply と使いたい ORM を入れます

% cpanm Reply
% cpanm Otogiri
% cpanm Otogiri::Plugin::DeleteCascade

ORM はお好みのやつでいいですが、DeleteCascade が使えるとめっちゃ捗るので、Otogiri がおすすめ。

で、一度実行してみましょう。

% reply
0> my $aa = 1 + 1;
$res[0] = 2

1> exit

うん、便利ですね。

一度実行すると、.replyrcというファイルが出来るので、こいつをコピーして、ORM 呼ぶ用のコンフィグを作ります

cp .replyrc .replyrc_myservice

名前は適宜好きなのつけてください。その DB を使うサービス名が良いと思います。

で、.replyrc_myservice を書き換えます。こんな感じ。

line 4〜8が追加した分です。

で、

% reply --cfg ~/.replyrc_myservice

のように、cfg オプションでコンフィグを指定できるので、そんな感じで実行します。すると...

% reply --cfg ~/.replyrc_myservice
1> $db->select('detective', { id => 1 });
$res[1] = {
    id => 1,
    name => 'Sherlock Shellingford',
    age => 15,
    toys => 'psychokinesis'
}

こんな感じで、シャーロック・シェリンフォードちゃんの情報がゲットできて$db 変数から Otogiri のメソッドが呼べて、最高便利です。

これだけだと、いちいちコンフィグを指定しなくてはいけないのがめんどくさいので、alias とかに登録しとくのが良いと思います。

% vi .bashrc
...
alias otogiri-myservice='reply --cfg $HOME/.replyrc_myservice'
...

FAQ?

便利?

便利ですよ。めっちゃ捗るので是非試して欲しい。

普通に SQL のコマンドラインで良くね?

みんなプログラマなんだから、 SQL より Perl の方が得意でしょ?あとお前それ Oracle 使ってても同じ事言えるの?

...ってのは半分本気で半分ジョークです。Otogiri::Plugin::DeleteCascade を有効にしているので、FK あるテーブルも上から消せるのが最高に気持ちいいです。

Teng で同じ事やりたいんだけど...

.replyrc_myservice の use Otogiri してる所の周辺を書き換えてください。僕最近 Teng 使ってないし。

DBIC で同じ事やりたいんだけど...

.replyrc_myservice の(ry



blog comments powered by Disqus