Robię właśnie dzień 17 z tutorialu jobeet i natknąłem się na problem, którego nie potrafię rozwiązać... Otóż podczas wyszukiwania wyników, nie ważne co wpiszę, zawsze dostaję pusty wynik. Nie wiem czy jest to może tym spowodowane, ale w tutku pisze, że mam skopiować takie pliki/katalogi:
Exception.php
Loader/
Autoloader.php
Search/
Niestety u mnie są tylko takie:
Loader/
Search/
Exception.php
Loader.php
Najgorsze jest w tym to, że nie dostaję żadnego błędu, że coś jest nie tak (może pomogłoby w poprawieniu błędu).
Nadmienię tylko, że zapytania jakie się wyświetlają to:
Cytat
SET NAMES 'utf8'
time: 0.001 sec, slow: NO, mem: 7.8 MB, mempeak: 7.8 MB, memdelta: 0.0 B
SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE 1<>1 AND jobeet_job.EXPIRES_AT>'2011-10-07 18:25:09' AND jobeet_job.IS_ACTIVATED=1 ORDER BY jobeet_job.CREATED_AT DESC LIMIT 20
time: 0.001 sec, slow: NO, mem: 8.3 MB, mempeak: 8.3 MB, memdelta: 0.0 B
SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE jobeet_job.ID IN (103)
time: 0.001 sec, slow: NO, mem: 8.8 MB, mempeak: 8.8 MB, memdelta: 0.0 B
time: 0.001 sec, slow: NO, mem: 7.8 MB, mempeak: 7.8 MB, memdelta: 0.0 B
SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE 1<>1 AND jobeet_job.EXPIRES_AT>'2011-10-07 18:25:09' AND jobeet_job.IS_ACTIVATED=1 ORDER BY jobeet_job.CREATED_AT DESC LIMIT 20
time: 0.001 sec, slow: NO, mem: 8.3 MB, mempeak: 8.3 MB, memdelta: 0.0 B
SELECT jobeet_job.ID, jobeet_job.CATEGORY_ID, jobeet_job.TYPE, jobeet_job.COMPANY, jobeet_job.LOGO, jobeet_job.URL, jobeet_job.POSITION, jobeet_job.LOCATION, jobeet_job.DESCRIPTION, jobeet_job.HOW_TO_APPLY, jobeet_job.TOKEN, jobeet_job.IS_PUBLIC, jobeet_job.IS_ACTIVATED, jobeet_job.EMAIL, jobeet_job.EXPIRES_AT, jobeet_job.CREATED_AT, jobeet_job.UPDATED_AT FROM `jobeet_job` WHERE jobeet_job.ID IN (103)
time: 0.001 sec, slow: NO, mem: 8.8 MB, mempeak: 8.8 MB, memdelta: 0.0 B
Druga sprawa to, że podczas testów wyświetla się taki komunikat:
Call to undefined method BasesfGuardUser::setEmailAddress. Ale ja nigdzie w pliku testu, nie używam tej metody... Plik JobeetJobTest.php wygląda następująco:
Kod
<?php
include(dirname(__FILE__).'/../../bootstrap/Propel.php');
$t = new lime_test(3);
$t->comment('->getForLuceneQuery()');
$job = create_job(array('position' => 'foobar', 'is_activated' => false));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return non activated jobs');
$job = create_job(array('position' => 'foobar', 'is_activated' => true));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 1, '::getForLuceneQuery() returns jobs matching the criteria');
$t->is($jobs[0]->getId(), $job->getId(), '::getForLuceneQuery() returns jobs matching the criteria');
$job->delete();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return deleted jobs');
function create_job($defaults = array())
{
static $category = null;
if (is_null($category))
{
$category = JobeetCategoryPeer::doSelectOne(new Criteria());
}
$job = new JobeetJob();
$job->fromArray(array_merge(array(
'category_id' => $category->getId(),
'company' => 'Sensio Labs',
'position' => 'Senior Tester',
'location' => 'Paris, France',
'description' => 'Testing is fun',
'how_to_apply' => 'Send e-Mail',
'email' => 'job@example.com',
'token' => rand(1111, 9999),
'is_activated' => true,
), $defaults), BasePeer::TYPE_FIELDNAME);
return $job;
}
?>
include(dirname(__FILE__).'/../../bootstrap/Propel.php');
$t = new lime_test(3);
$t->comment('->getForLuceneQuery()');
$job = create_job(array('position' => 'foobar', 'is_activated' => false));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return non activated jobs');
$job = create_job(array('position' => 'foobar', 'is_activated' => true));
$job->save();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 1, '::getForLuceneQuery() returns jobs matching the criteria');
$t->is($jobs[0]->getId(), $job->getId(), '::getForLuceneQuery() returns jobs matching the criteria');
$job->delete();
$jobs = JobeetJobPeer::getForLuceneQuery('position:foobar');
$t->is(count($jobs), 0, '::getForLuceneQuery() does not return deleted jobs');
function create_job($defaults = array())
{
static $category = null;
if (is_null($category))
{
$category = JobeetCategoryPeer::doSelectOne(new Criteria());
}
$job = new JobeetJob();
$job->fromArray(array_merge(array(
'category_id' => $category->getId(),
'company' => 'Sensio Labs',
'position' => 'Senior Tester',
'location' => 'Paris, France',
'description' => 'Testing is fun',
'how_to_apply' => 'Send e-Mail',
'email' => 'job@example.com',
'token' => rand(1111, 9999),
'is_activated' => true,
), $defaults), BasePeer::TYPE_FIELDNAME);
return $job;
}
?>
Już zacząłem kopiować wszystkie pliki dla pewności ale też nie działa. Czy ktoś z Was natknął się na podobny problem?
=========================================================
Problem rozwiązany... Dla potomnych, należy zmienić funkcję getLuceneIndexFile() i zamiast instrukcji:
Kod
return sfConfig::get('sf_data_dir').'/job.'.sfConfig::get('sf_environment').'.index';
wpisać:
Kod
return sfConfig::get('sf_data_dir').'/job.cli.index';