MTの一部の機能をコマンドラインから操作する

  • 投稿日:
  • by
  • カテゴリ:
プラグイン(には限りませんが)を書いていると、これから書こうとしているコードやちょっとした思いつきが正しく動くのかどうか確認したくなることがあります。 確認のためには、最低限の動作をするプラグインに仕上げ、ブラウザからアクセスし、ログあるいはデバッガで確認するという手順を踏む必要がありますが、確認したいコードがたった1行、例えば、MT->version_number()がどういう形式の値を返すのか知りたい、というときには、いちいち前述のような作業を行うのは面倒です。また、最低限の動作をさせるために書いた部分に問題があり、もともと確認したかったところへなかなか到達しない、ということもありがちです。 そうした場合に、役に立つのが、コマンドラインからMTの一部の機能を操作するスクリプトです。(スクリプトといっても、デバッガが起動し、MTのインスタンスを生成した後、breakするだけなのですが...。) ==
#!/usr/bin/perl -d

use lib '../lib';
use vars qw( $mt );
use MT;

BEGIN {
    $mt = MT->new;
}

$DB::signal = 1;
== これをMTをインストールしたディレクトリの下にある、toolsディレクトリに配置して、そこから起動します。ここではconsoleというファイル名にしています。 ==
$ perl console

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(console2:23):	$DB::signal = 1;
  DB<1> 
== スクリプトを起動すると、デバッガのプロンプトが表示されますので、後はperlのプログラムを記述するだけです。変数$mtがMTのインスタンスですので、これを使っていろいろと試すことができます。 たとえば、前述のバージョン番号を調べるのであれば、 ==
  DB<1> p $mt->version_number
4.22
== とします。 公開済みのエントリの一覧を取得し、タイトルを表示するには、 ==
  DB<2> @entries = MT::Entry->load({status=>MT::Entry::RELEASE()})

  DB<3> print $_->title,"\n" for @entries
Movable Type を利用してウェブサイトをリニューアルしました
Movable Type 4 へようこそ!

  DB<4> 
== などとします。 スクリプトの中にサブルーチンを定義しておくと便利です。例えば、変数をダンプするのに毎回、 ==
print Data::Dumper->Dump($v);
== と入力するのは面倒なので、 ==
sub dd {
    my ($v) = @_;
    require Data::Dumper;
    print Data::Dumper->Dump($v);
}
== と定義しておけば、 ==
dd $v
== だけで済みます。YAMLでフォーマットされたのが見やすければ、 ==
sub xx {
    my ($v) = @_;
    require YAML;
    print YAML::Dump($v);
}
== と定義しておき、 ==
xx $v
== とすることができます。 ちょっと動作を確認したい、という場面で役に立つと思いますが、いかがでしょうか?