Ethna 2.5.0 preview5とEthna_Plugin_Debugtoolbar 0.9.0を試してみた

ちょっとまえにEthna_Plugin_Debugtoolbarがリリースされたということで、いい機会なのでEthna 2.5.0 preview5といっしょに試してみた。

Ethna 2.5.0 preview5をインストールするにあたって、すでにインストールしてるEthna 2.3.7を上書きしたくないので、次のような手順でやってみた。

  1. Ethna 2.3.7でダミープロジェクトを作成
  2. ダミープロジェクトにEthna 2.5.0 preview5をインストール
  3. ダミープロジェクト内のEthna 2.5.0 preview5で改めてプロジェクトを作成
  4. プロジェクトにEthna 2.5.0 preview5をインストール
$ ethna add-project dummy
$ cd dummy
$ ethna pear-local channel-discover ethna.jp
$ ethna pear-local install http://pear.ethna.jp/pear/Ethna-2.5.2009062201.tgz
$ cd ..
$ dummy/bin/ethna add-project sample
$ cd sample
$ ../dummy/bin/ethna pear-local channel-discover ethna.jp
$ ../dummy/bin/ethna pear-local install -a http://pear.ethna.jp/pear/Ethna-2.5.2009062201.tgz

これでEthna 2.5.0 preview5によって作られたプロジェクトにEthna 2.5.0 preview5がインストールされた。

このプロジェクトにEthna_Plugin_Debugtoolbarをインストール。

$ bin/ethna pear-local channel-discover openpear.org
$ bin/ethna pear-local install openpaer/Ethna_Plugin_Debugtoolbar
$ cd www
$ ln -s ../lib/.pear/data/Ethna_Plugin_Debugtoolbar/data/www ./Debugtoolbar

このプロジェクトにブラウザでアクセスするとdebugtoolbarが表示…はまだされない。

Ethna_Plugin_Debugtoolbar 0.9.0 をリリース - 肉とご飯と甘いもの @ sotarokのHow to useのとおりにapp/Sample_Controller.phpとetc/sample-ini.phpを修正する。

再度ブラウザでアクセス。…まだdebugtoolbarは表示されない。

lib/Ethna/extlib/Plugin/Filter/Debugtoolbar.phpを見てみると

<?php
    function postFilter()
    {
        if (!$this->ctl->view->hasDefaultHeader) {
            return null;
        }

        $this->init();
        $this->dumpInfo();
        $this->dumpConfig();
        $this->dumpActionForm();
        $this->smartyDebug();

    }

ていうコードがあるので、ビュークラスに$hasDefaultHeaderの定義を追加してみる。

<?php
class Sample_View_Index extends Sample_ViewClass
{
    var $hasDefaultHeader = true;

ページの下になんかでた!どうやらdebugtoolbarが素のまま出てるみたい。

出力されたページ内容でここが気になる。

<link rel="stylesheet" href="/Debugtoolbar/css/ether.css" type="text/css" />

CSSのパスがおかしい?

これを出力してるのはlib/Ethna/extlib/Plugin/Filter/Debugtoolbar.phpのこのへん

<?php
    function init()
    {
        $url = $this->config->get('url');
        if (substr($url, -1) != '/') {
            $url .= '/';
        }
        // jquery がロードされてるかどうか調べる
        // なければ google.load
        // めんどくせー常にloadでいい?

        echo <<<EOL
<link rel="stylesheet" href="{$url}Debugtoolbar/css/ether.css" type="text/css" />
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
    google.load("jquery", "1.2");
</script>
<script type="text/javascript" src="{$url}Debugtoolbar/js/jquery.cookie.js"></script>
EOL;

etc/sample-ini.phpの'url'は空っぽなので、ここの$urlは「/」になってしまう。

etc/sample-ini.phpを修正。

$config = array(
    // site
    'url' => './',

こうすればCSSのパスは「./Debugtoolbar/css/ether.css」になって正しくなるはず。

再度ページにアクセス。ページの上にdebugtoolbarが表示された!

でもエラーログが出てる。

Sample[3194](WARNING): Smarty._fetch_resource_info(/lib/Smarty/Smarty.class.php:1415): [PHP] E_USER_WARNING: Smarty error: unable to read resource: "/home/okonomi/public_html/blog/sample/template/smarty_debug.tpl" in /home/okonomi/public_html/blog/sample/lib/Smarty/Smarty.class.php on line 1093

smarty_debug.tplが見つからないらしい。でもそんなファイルはEthna_Plugin_Debugtoolbarのインストールディレクトリにもopenpearリポジトリにもない…。ググったらnequalさんとこのリポジトリがでてきたのでそこからダウンロードさせてもらった。

$  wget -O template/smarty_debug.tpl http://svn.nequal.jp/public/library/Ether_Suite/trunk/template/smarty_debug.tpl

するとエラーログもなくなってちゃんと動作するようになった!