You are currently browsing the archives for the day: Thursday, den 26. November 2009.

November 26, 2009

Bugzilla 3.6 での新しい拡張機構

注: 以下は、mkanatによるサマリーのメールの日本語版です。 Bugzillaの拡張システムがmkanatを中心として書き換えられました。 古い拡張システムには、以下のようなそれなりに大規模な拡張を入れる際に問題となる(なった)点がありました。 テンプレートフックは、コードからでは説明しにくい配置場所にありました。(template/en/hook なのか、template/en/default/hook なのか、template/en/extension なのか?) コードは独立の.plファイルで毎回実行時にコンパイルされ、かつサブルーチンをかけませんでした。(同じリクエスト内で複数回フックを呼び出した時に、Bugzilla が再定義警告を出しました。) ほかにもいろいろな点がありましたが、この二つが大きな問題点でした。 新しい機構ではよりよくなっています。ドキュメントは新しく作成された Bugzilla::Extension モジュールの POD ファイル にあります。 ハイライトは、以下のようになります。 拡張のディレクトリの中にテンプレート、ライブラリ、そして Config.pm と Extension.pm の二つのファイルがあります。 Config.pm は拡張が必要とする情報を持ちます。Extension.pm は拡張が提供する機能をサブルーチンとしてすべて実装しています。 “Foo” という名前のコードフックのみのものは、extensions/Foo.pm のように拡張はひとつのファイルにもできます。 “Foo” という名前の拡張のモジュール名は Bugzilla:Extension::Foo のようになります。 拡張は Bugzilla::Extension::Foo::Bar といったライブラリを読み込みます。 開発者が何もしなくても、拡張システムはこれを extensions/Foo/lib/Bar.pm にマップします。 Bugzilla::Extension::Foo パッケージが読み込まれると、必要なら “use Bugzilla::Extension::Foo::Bar;” とすることで Bugzilla のどこからでも Bugzilla::Extension::Foo::Bar を直接利用できる用になします。 これは、同時に、ライブラリを Perl グローバルに (/usr/lib/perl5/ の中の Bugzilla/Extension/Foo/Bar.pm として) […]

more...