Automatický update autoloaderu na lokále

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ViliamKopecky
Nette hipster | 230
+
0
-

Docela bych uvítal kdyby autoloader (asi RobotLoader) při nenalezení třídy vyvolal automaticky update – nebaví mě pořád promazávat temp/.

A přikládám patch ;)

RobotLoader.php

Přidat vlastnosti

	/** @var bool */
	private $rebuilt = false;

	/** @var bool */
	public $autoUpdate = false;

Rozšířit metodu tryLoad o elseif na konci

		if (isset($this->list[$type])) {
			self::includeOnce($this->list[$type]);
			self::$count++;
		} /* begin patch */ elseif(!$this->rebuilt && $this->autoUpdate) {
			$this->rebuild();
			$this->tryLoad($type);
		} /* end patch*/

A ještě do metody rebuild() přidat

		$this->rebuilt = true;

Funguje když se nastaví $autoUpdate=true. To by se teda možná hodilo dát tam, kde se nastavuje i Laděnka podle Mode atd.

David Grudl
Nette Core | 8218
+
0
-

I s patchem, wow! :-))

Přidal jsem do RobotLoaderu závislost na číslu revize, mělo by to pomoci. Ale obecně po každém updatu Nette či aplikace je nutné smazat celou cache, nejen tuto. Bylo by možná šikovné to implementovat do bootstrapu, ale zatím mě nenapadá jak.

ViliamKopecky
Nette hipster | 230
+
0
-

Jo jasně, ale když připíšu novou komponentu, tak musim mazat cache, když změnim název něčeho, musim mazat, na ušetření téhle práce (no, „práce“) mi to řešení stačí.

Pokud bych napsal celou aplikaci bez potřeby testování, tak to nepotřebuju, ale neaví mě to tisíckrát denně mazat :)

V bootstrapu si nastavim autoUpdate a je to. Nebo je to špatnej přístup?

David Grudl
Nette Core | 8218
+
0
-

Jo takhle, sorry, já to nepochopil.