symfony1.2でDoctrine1.1使ってJobeetチュートリアル17日目
data/job.dev.indexの中身は、ころころ変わるので
svn propedit svn:ignore data
で、
*.*.index
と書き込んで保存。
検索のインデックスフォルダ(job.dev.indexって書くより、*使ってあいまい指定が便利)をsubversionの管理外にするといいんじゃないかと
ちゃんと管理外になってるかな?って時は、
svn st --no-ignore
すれば、管理外のやつらは頭に"I"が付いてます。
Luceneはpluginなのね
yum install php-ZendFramework-Search-Lucene
Searching
$ php symfony doctrine:data-load --env=dev 中略 Warning: Zend_Loader::include_once(parent.php): failed to open stream: No such file or directory in /usr/share/php/Zend/Loader.php on line 83 Call Stack: 0.0000 50804 1. {main}() /usr/bin/symfony:0 0.0000 264888 2. include('/usr/share/pear/symfony/command/cli.php') /usr/bin/symfony:37 0.2100 3614504 3. sfSymfonyCommandApplication->run() /usr/share/pear/symfony/command/cli.php:20 0.2300 3797824 4. sfTask->runFromCLI() /usr/share/pear/symfony/command/sfSymfonyCommandApplication.class.php:72 0.2300 3797824 5. sfBaseTask->doRun() /usr/share/pear/symfony/task/sfTask.class.php:75 3.3600 6196640 6. sfDoctrineLoadDataTask->execute() /usr/share/pear/symfony/task/sfBaseTask.class.php:62 3.4500 6983060 7. sfDoctrineBaseTask->callDoctrineCli() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/task/sfDoctrineDataLoadTask.class.php:87 3.5100 7392944 8. Doctrine_Cli->run() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBaseTask.class.php:104 3.5100 7392944 9. Doctrine_Cli->_run() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php:91 3.5200 7600204 10. Doctrine_Task_LoadData->execute() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Cli.php:152 4.1600 10701312 11. Doctrine::loadData() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Task/LoadData.php:43 4.1600 10727960 12. Doctrine_Data->importData() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine.php:849 4.1700 10822180 13. Doctrine_Data_Import->doImport() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data.php:222 4.6400 12768132 14. Doctrine_Data_Import->_loadData() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Import.php:113 22.6500 17875004 15. JobeetJob->save() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Data/Import.php:291 22.7400 17875372 16. JobeetJob->updateLuceneIndex() /home/takitake/sfprojects/jobeet/lib/model/doctrine/JobeetJob.class.php:32 22.9800 17980012 17. JobeetJob->getCompany() /home/takitake/sfprojects/jobeet/lib/model/doctrine/JobeetJob.class.php:68 22.9800 17980216 18. sfDoctrineRecord->__call() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php:0 22.9800 17981388 19. call_user_func_array() /home/takitake/sfprojects/jobeet/plugins/sfDoctrinePlugin/lib/record/sfDoctrineRecord.class.php:185 22.9800 17981748 20. Zend_Loader::autoload() /usr/share/php/Zend/Loader.php:0 22.9800 17981748 21. Zend_Loader::loadClass() /usr/share/php/Zend/Loader.php:186
わぉ、大惨事。
データの投入自体は成功してるみたい。
フォーラムに同様の症状の人発見。
http://www.symfony-project.org/forum/index.php/m/68657/
肝心の回答はまだ無し。
// lib/model/doctrine/JobeetJob.class.php public function save(Doctrine_Connection $conn = null) { //... $ret = parent::save($conn);
parent::saveに反応してる気がする。
Zend_Loader
「parentクラスのsaveメソッドが呼ばれてる!」
「parent.phpを探すぜ」
「(´・ω・`)ナカッタヨ」
16日目のとこで書いてあるように、autoload.ymlでZendの場所定義して、symfonyのautoloadに読み込み任せたらエラー消えた。
- autoload.ymlで/usr/share/php/Zend/へパス通す(sfConfig::get('sf_lib_dir').'/vendor/Zendでも可)
- ProjectConfiguration::registerZend();をコメントアウト
あくまで応急処置ですよ。
Unit Tests
テスト回数も更新しとく
<?php // test/unit/model/JobeetJobTest.php $t = new lime_test(7, new lime_output_color());
Tasks
Propel式をDctrine式に訂正
<?php // lib/task/JobeetCleanupTask.class.php // Remove stale jobs // $nb = JobeetJobPeer::cleanup($options['days']); $nb = Doctrine::getTable('JobeetJob')->cleanup($options['days']);