frosty22/nette-deploy-center

Center for managing deployment, browse logs, exceptions etc. on production.

v1.1 2013-11-18 14:02 UTC

This package is not auto-updated.

Last update: 2024-04-22 12:29:22 UTC


README

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}