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を上書きしたくないので、次のような手順でやってみた。
- Ethna 2.3.7でダミープロジェクトを作成
- ダミープロジェクトにEthna 2.5.0 preview5をインストール
- ダミープロジェクト内のEthna 2.5.0 preview5で改めてプロジェクトを作成
- プロジェクトに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
するとエラーログもなくなってちゃんと動作するようになった!