DeployCenter
Verze 1.1
Upozornění: Podpora Maintenance je dostupná zatím pouze v @dev verzi nikoliv @stable, takže pokud používáte stable, poté implementuje pouze až k volání metody register() .. všechny řádky níže již jsou irelevantní.
Implementace v bootstrap.php, ideálně ihned po načtení autoloaderu z Composeru, aby se nestalo, že pád RobotLoadera způsobí nefunkčnost tohoto DeployCentra.
Zároveň systém volitelně podporuje tzv. údržbu, tj. pokud vystavujete změny a chtěli byste, aby Vám uživatelé nemohli zasahovat do stránky, když není kompletně vystavená. Pak můžete po registraci DeployCentera zavolat metodu checkMaintenance, která v případě, že je údržba aktivní zobrazí "mainteance" šablonu, samozřejmě můžete použít vlastní zavoláním setMaintenanceTemplateFile.
<?php
// Load Nette Framework and autoloader generated by Composer
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/libs/functions.php';
// Base params
$logDir = __DIR__ . "/log";
$tempDir = __DIR__ . "/temp";
// Debugger center
$deploy = new DeployCenter\Application($logDir, $tempDir, "pass123");
$deploy->register("debug");
// Debugger maintenance support (optional)
//$deploy->setMaintenanceTemplateFile("path/to/our/template.latte"); // If we want own maintenance template
$deploy->checkMaintenance(); // Check maintenance, if in progress kill page and show maintenance template
// Configure application
$configurator = new Nette\Config\Configurator;
...
?>Pokud byste chtěli informovat uživatele chvíli před vystavení, je to možné pomocí komponenty AlertControl, které předáte objekt Maintenance. Můžeme ho například v bootstrapu přidat do kontejneru jako službu:
<?php
...
// Create container
$container = $configurator->createContainer();
// Debugger center - add dynamic service Maintenance, for support AlertControl (optional)
$container->addService("maintenance", $deploy->getMaintenance());
...
?>A poté například ve Vašem BasePresenter si vytvořit tuto komponentu:
Pozn.: Bohužel zatím jsem nepřišel na způsob, jak se vyhnout volání kontextu, když je služba dynamicky předaná.
<?php
abstract class BasePresenter extends Nette\Application\UI\Presenter {
/**
* @return \DeployCenter\Maintenance\AlertControl
*/
protected function createComponentAlertControl()
{
$alertControl = new \DeployCenter\Maintenance\AlertControl();
$alertControl->setMaintenance($this->context->getService("maintenance"));
return $alertControl;
}
}
?>A v šabloně, kde chci mít onu hlášku v případě, že v blízké době (v tuto chvíli 10 minut) dojde k vystavení a možné nefunkčnosti stránek, vyrenderujeme komponentu:
{control alertControl}