印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxMovableTypePlugin アプリケーションバージョン表示プラグイン 0.1

アプリケーションや OS のバージョンを表示するプラグインを書く。環境に密接に関係するため,「汎用」とは対極にあるプラグインになる。

■ ■ ■

このサイトでは,Apache や Perl などのアプリケーションを利用している。Movable Type には,バージョンを表示するタグ <$MTVersion$> が用意されている。これに習って,Apache などのアプリケーションのバージョンも表示したい。そして,もしこれらのアプリケーションがバージョンアップしたら自動的にバージョン表示も更新されるようにしたい。

以下は,ごく簡単に Movable Type 2.x 用として書いたもので,2.661 で動作している。appversion-0.1.pl をダウンロードしてプラグインディレクトリに保存する。MT 3.x 用はプラグイン登録用の前置きを追加してやるとよい。MT 3.x の作法については,naoyaのはてなダイアリー - Movable Type で言及リンクのない TrackBack ping を弾くプラグイン が参考になる。

主要部分は以下の通り。OS は Vine Linux (Redhat 系) である。アプリケーションがインストールされているパスが違えば,プラグインで指定するパスも変わってくる。OS や環境に依存したものとなるため,「汎用」とは対極にあるプラグインだといえる。恐らくこのまま使う人はいないだろう。何かの参考になればよいので,使っているままのものを公開してしまうことにした。

MT::Template::Context->add_tag(AppVersion => \&AppVersion);
sub AppVersion {
  my $ctx = shift;
  my $args = shift;
  my $out;
  if (defined($args->{target})) {
    if ($args->{target} eq 'Apache') {
      $out = `/usr/sbin/httpd -v`;
      $out =~ /(\d+)\.(\d+)\.(\d+)/;
      return "$1.$2.$3";
    } elsif ($args->{target} eq 'VineLinux') {
      $out = `cat /etc/vine-release`;
      $out =~ /(\d+)\.(\d+)/;
      return "$1.$2";
    } elsif ($args->{target} eq 'Perl') {
      $out = `/usr/bin/perl -v`;
      $out =~ /(\d+)\.(\d+)\.(\d+)/;
      return "$1.$2.$3";
    } else {
      return "";
    }
  } else {
    return "";
  }
}

必要に応じて好きなアプリケーションを追加すればよい。改めて見てみるとつまらないプラグインだが,気にしない。

テンプレートには,以下のように書いておく(細かい整形は省略)。

<a href="http://www.vinelinux.org/">VineLinux <$MTAppVersion target="VineLinux"$></a>
<a href="http://www.apache.jp/">Apache <$MTAppVersion target="Apache"$></a>
<a href="http://www.perl.org/">Perl <$MTAppVersion target="Perl"$></a>

次のような表示になる。

powered-by-vl2.6.gif
上は Vine Linux 2.6 での表示。

powered-by-vl3.2.gif
現在の Vine Linux 3.2 ではこのように表示されている。テンプレートやプラグインのコードを変更しなくていいというのは便利である。

PHP を使っているのであれば,わざわざプラグインにする必要はない。テンプレートの PHP スクリプト内で exec コマンドを呼べば同様のことが可能である(多分)。

2008年3月15日追記:
Vine Linux 4.2 用のバージョンをリリースします (appversion-0.2.pl)。上の記事のバージョンでは,return がサブルーチン内に散らばっていましたが,これをまとめました。

Posted by n at 2006-05-24 23:46 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?