PHPのRuby on Railsクローンのフレームワーク Akelos PHPをいじってみた出来事のメモ。

Akelosをいじってみるメモ帳

Akelos PHP Blogチュートリアル一覧(全18記事)
Akelos PHP ユーザ認証チュートリアル一覧(全19記事)

2008年08月24日

AkObjectのlogメソッドは機能しないから直す

AkActiveRecordなど主要なクラスの基本クラスとなっているAkObjectクラス。

これには log というメソッド(関数)があるんだが、これが機能しない。

バグかな?

とりあえず、下記のようにして直してみた。
コメントアウトしているところが、元のコード。太字が足したところ。

AkObject.php内
function log($message, $type = '', $identifyer = '')
{
// require_once 'Log.php';
// $ident = empty($ident) ? 'main' : $ident;
//
// $log = Log::singleton('file', AK_LOGS_DIR.DS.$ident.'.log',$ident);
// $log->log($type, $message);

$logger =& Ak::getLogger();
$logger->log( empty($type) ? 'debug' : $type ,$message);

}
タグ:akelos
posted by AMUAMU at 00:52| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月23日

DEBUG用メモ:DBへのSQLクエリーの結果確認る

データベースへのSQLクエリーの発行内容は、デバッグフラグを立てておけば、標準でdevelopment.logに出る。

しかしながら、このSQLはPEARのADODBに渡す形式のSQLである。

SQLが正常に動いているかどうかをデバッグしたい場合にはさらに、どのような引数を付けているか、SQLの結果の生の状態はどんな風になっているかを確認しないと辛いときがある

そこで、デバッグ出力を足してみる
\lib\AkActiveRecord\AkDbAdapter.php

executeメソッド内(220行前後 [8/23現在最新のソースコードで])
の .... $this->connection->Execute(... が含まれている行の前後に以下を足して、ログで確認できるようにしてみた


$this->_log($message.'(bindings): '. empty($bindings) ? '' : print_r($bindings ,true));
$result = isset($bindings) ? $this->connection->Execute($sql_string, $bindings) : $this->connection->Execute($sql_string);
$this->_log($message.'(result): '. print_r($result,true));

前後の太字の部分が足したところ
これで、SQLの前後の中身がまるまるdevelopment.logに出る。

複雑なSQLのデバッグ時には役に立つんじゃないかな?

(8/24修正)
$bindingsが空だった場合が想定されてなかったので、ちょっと修正した
タグ:tips DEBUG
posted by AMUAMU at 23:41| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月19日

AkActiveRecordの挙動が・・・&ActionMailerがおかしい?

色々確認をしていると、2つほど問題が発生して時間食ってる。
取りあえず寝る為にメモ代わりに・・w

1.AkActiveRecordの挙動がいまいち不安定で、動作確認に時間がかかるぅ・・・
findFirstBy に ('email',$email) とか引数を与えると
findFirstBy -> findBy -> find -> _findInitial -> _findEvery -> findBySql -> $this->_db->select [AkDbAdapterへ] -> execute -> $this->connection->Execute [PEARのADODBライブラリへ]

という感じで、呼び出される。

本来このPEARのADODBライブラリのExecuteメソッド
Execute($sql,$inputarr=false)

に対して
$sql = "SELECT * FROM users WHERE users.email = ? LIMIT 1"
$inputarr = Array( [0] => hoge@hogehoge.jp )

というふうにAkDbAdapter等で展開されて渡されて、正常にSQL文が実行されるはずなんだけど、なーんか動作が不安定。
SQL文は正常に生成できてるんだけど
$inputarr = Array( [1] => hoge@hogehoge.jp )

とかって、なんか配列展開中のarray_shiftがうまく行かないのか、配列が2番目(配列番号1)とか変なところに入る事がある。
試行錯誤してると、いきなり治ったりするからタチが悪い。
Apache再起動しても治らないのに、デバッグ用に出力コード入れただけで治ったりとか、もう、なんなんだいったいw
Akelosってより、Windows環境のPHPが不安定なのか?????

致命的な問題に繋がる事じゃないし、良いんだけど、
デバッグで時間食う・・・・・
Akelosが悪いわけじゃないっぽいんだけど、いまいち・・・
ソースコードを追っかける限りは問題無さそうだしなぁ・・・

とりあえず、今は正常に動いているので解決。
これが解決したので今日は終わり。

2.そして、残ってるのがActionMailerがおかしい?ってかんじのところ
具体的には、メールアドレスとして abc@aa1.so-net.ne.jp というアドレスを入れると、何故か「 - 」でアドレスが分割されて、Toが2つになって、SMTPサーバに送られる。
RCPT TO:<abc@aa.so>
RCPT TO:<net.ne.jp>

とかって、SMTPサーバ側の受信ログで2つのアドレスに分割されているところまで、確認した。
AkActionMailerクラスのrecipients(Mail.phpのrecipientsそのままっぽいんだけど)には正常なアドレスで格納されている事は確認した。

Akelosが悪いのか、Akelos付属のPEARのMail.phpの問題なのかなぁ・・・?
とりあえず、明日(というか今日だろうけど)はこれを追っかけよう。

あとちょっとなんだ、あとちょっと。
文は全部書けているんで、ここらの確認が済めば、再校正をすれば完成なんだけどなぁ、チュートリアル。

まぁ、でも、こういうデバッグとか調査は楽しいw(まぞ?
タグ:雑記
posted by AMUAMU at 04:58| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月18日

あーとちょっとぉー

Akelosチュートリアル、認証機能追加編
あとちょっとだぁ

暇を見つけて少しずつ最終確認中でする
タグ:雑記
posted by AMUAMU at 23:37| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月14日

ActionMailer問題解決

メールプロパティの渡し方がまずかったようだ
委細は後日の記事で

問題は解決したので、細かいところの最終確認中
FindBy周りの挙動を精査してるところ。
何が最適なのか、サニタイジング大丈夫なのかをコード全部読んで確認しないと不安なんでw
タグ:雑記
posted by AMUAMU at 09:18| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月13日

AkActionMailer、少々苦戦中

正しく使ってるつもりなんだがなぁ。。。
なんかエラーが出る。

明日原因を追ってみよう


Notice: Undefined property: AkMailMessage::$recipients
in C:\xampp\htdocs\akelos\lib\AkActionMailer
\AkMailMessage.php on line 50

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\akelos\lib\AkActionMailer
\AkActionMailerQuoting.php on line 111

Warning: join() [function.join]: Invalid arguments passed in
C:\xampp\htdocs\akelos\lib\AkActionMailer
\AkMailMessage.php on line 127

Notice: Undefined property: AkMailMessage::$subject in
C:\xampp\htdocs\akelos\lib\AkActionMailer
\AkMailMessage.php on line 121

Warning: mail() [function.mail]: "sendmail_from" not set
in php.ini or custom "From:" header missing in
C:\xampp\htdocs\akelos\lib\AkActionMailer\AkMailDelivery
\AkPhpMailDelivery.php on line 16

タグ:雑記
posted by AMUAMU at 04:08| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

2008年08月12日

ActionMailer来たんで再開しよう

ActionMailerの実装がされたので、再開予定
タグ:雑記
posted by AMUAMU at 15:19| Comment(0) | TrackBack(0) | Akelos | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。