Samostatný robot-loader a problém s cache
- lokix
- Člen | 11
Zdravím všechny zde na fóru,
dlouhou dobu jsem se snažil nejen zde, ale i na googlu najít postup jak zprovoznit samostatně robot-loader na ne-nette projektu. Nette se mi líbí, ale když už se Nette rozdělilo na samostatné části (rozděluje) tak jsem chtěl tuto možnost využít, nicméně se mi to jako začátečníkovi nedaří. Dle githubu: „:https://github.com/…robot-loader“ je poute toto:
$loader = new Nette\Loaders\RobotLoader;
// Add directories for RobotLoader to index
$loader->addDirectory('app');
$loader->addDirectory('libs');
// And set caching to the 'temp' directory on the disc
$loader->setCacheStorage(new Nette\Caching\Storages\FileStorage('temp'));
$loader->register(); // Run the RobotLoader
Takže si do index-u.php nainkluduju:
require_once __DIR__ . '/RobotLoader/RobotLoader.php';
A po spuštění mám chybku: Class
‚Nette\Caching\Storages\FileStorage‘ not found.
Měl jsem za to, že další závislosti nebudou potřeba, ale pokud to chápu
musím ještě přidat cache?
Jinak temp adresář je vytvořen s 777 chmod-em. Už si opravdu nevím rady.
S Nette jsem nedávno začal a moc se mi líbí jenže na některé věci →
hodně jednoduché ho nechci celé načítat (nevím jak pracovat s minifield
verzí když je komprimovaná na phar) tak to chci rozdělit jen na to co
potřebuju.
Snad se tady najde dobrá duše, které nevadí stratit trochu času s novicem ;o)
- voda
- Člen | 561
Závislosti jsou uvedené v composer.json, pokud nainstaluješ robot-loader pomocí composeru, stáhnou se ti automaticky i závislosti.
- MartinitCZ
- Člen | 580
V composer.json máš závislosti jasné.
Nestahuj zip z gitu, ale nastav si ve svém projektu composer.json a spust
composer install.
Bez composer se neobjedeš.
EIDT: Druhej :)
Editoval martinit (31. 3. 2014 15:39)
- lokix
- Člen | 11
Díky oběma za pomoc.
Použil jsem tedy užitý composer.json z odkazu víše a po composer install se začalo stahovat, ale zarazila mě chyba dole: RuntimeException – Could not scan for classes inside „src/“ which does not appear to be a file nor a folder
Jak tedy nyní rozjedu ten RobotLoader?
composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
– Installing nette/utils (dev-master 2ddafa5)
Cloning 2ddafa533714410212bfb140f725be5fbbbf63c5
– Installing nette/finder (dev-master e67d6db)
Cloning e67d6dbe250bd1416b9f6814aaf25b79d21871df
– Installing nette/caching (dev-master 3110e35)
Cloning 3110e35516ba261eb4076f757137300929b11252
– Installing nette/tester (dev-master 9b569f8)
Cloning 9b569f8c6e1e4653c802d3faa24234f052c582bc
Writing lock file
Generating autoload files
[RuntimeException]
Could not scan for classes inside „src/“ which does not appear to be a file
nor a folder
Edit:
**Po vytvoření složky src a znovu-instalaci bylo dokončeno bez chybových
hlášek, ale teď mám složku vendor kde jsou tedy všechny závislosti, ale
je to všechno jiné tak mě zajímá jak nyní vytvořím autoload?
Všem za jakékoliv nakopnutí děkuji a i za trpělivost.**
Editoval lokix (31. 3. 2014 16:37)
- Filip Procházka
- Moderator | 4668
Předně si prosím uvědomte, že samostatné balíčky ještě nejsou úplně 100% a David se zatím stále neštítí agresivně forcepushovat. Dokud tam nebude první tag je to na vlastní nebezpečí ;)
- lokix
- Člen | 11
voda napsal(a):
Ukaž obsah tvého
composer.json
souboru.
Tento viz. odkaz výše.
{
"name": "nette/robot-loader",
"description": "Nette RobotLoader: comfortable autoloading",
"homepage": "https://nette.org",
"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
"authors": [
{
"name": "David Grudl",
"homepage": "http://davidgrudl.com"
},
{
"name": "Nette Community",
"homepage": "https://nette.org/en/contributors?lang=en"
}
],
"require": {
"php": ">=5.3.1",
"nette/caching": "@dev",
"nette/finder": "@dev",
"nette/utils": "@dev"
},
"require-dev": {
"nette/tester": "@dev"
},
"autoload": {
"classmap": ["src/"]
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
}
}
- lokix
- Člen | 11
mkoubik napsal(a):
lokix napsal(a):
**Po vytvoření složky src a znovu-instalaci bylo dokončeno bez chybových hlášek, ale teď mám složku vendor kde jsou tedy všechny závislosti, ale je to všechno jiné tak mě zajímá jak nyní vytvořím autoload?
require 'vendor/autoload.php';
Díky za posun ;o)
ale moje blbost, že sem to nerozvedl… Jak po requiru autoloadu napojím robotloader?
Edit:
Opraveno a vše funkční. Moc díky za help.
Editoval lokix (1. 4. 2014 11:30)
- lokix
- Člen | 11
voda napsal(a):
Máš špatně obsah composer.json, dej si tam
{ "require": { "nette/robot-loader": "@dev", }, "minimum-stability": "dev" }
a pak dej
composer update
. Potom v bootstrapurequire 'vendor/autoload.php';
a$loader = new Nette\Loaders\RobotLoader; ...
Díky za reakci
Kupodivu mi to funguje i na původním json-u. Ve složce tem se vytvoří
cache. Ale udělám to jak píšeš. Ono já mám ten json přímo
z robotloaderu na gitu, ale asi je tam toho víc než potřebuju. Jinak
moc díky.
Edit:
Tak je to super a funkční bez zbytečností, jen sem musel ze řádku
3 odmazat koncovou čárku.
Díky Chlape a všem ostatním za pomoc.
Editoval lokix (1. 4. 2014 11:53)