Automatizácia činností a zdieľanie kódu

Zverejnil Pali dňa 31.03.2011 |

Tagy: , , ,

Keď vytvoríte druhú / tretiu stránku pomocou SilverStripe CMS zistíte, že vlastne ani inštalačný skript, ktorý je súčasťou stiahnuteľnej verzie ani nepotrebujete. Inštalácia nového projektu bude vlastne spočívať len v prekopírovaní súborov, správnom nastavení prístupov do databázy, teoreticky zmenou názvu šablóny (premenovanie adresára a rovnaká zmena v mysite/_config.php) a vytvorení prázdneho assets priečinka spolu s nastavením práv pre zápis serverom do tohto priečinka. Nǎsledne "buildnete" váš nový projekt a stránka je pripravená na prácu.

_ss_environment.php

Dokumentácia: http://doc.silverstripe.org/sapphire/en/topics/environment-management

Po ďalších projektoch sa vám už ani DB prístupy (do databázy resp. pre predvoleného admina) nebudú chcieť stále pridávať/meniť a tak si vytvoríte súbor _ss_environment.php, ktorý bude uložený o level vyššie (alebo aj o dva), tým pádom sa v _config.php súbore budete meniť len názov databázy.

Príklad:

<?php
/* What kind of environment is this: dev, test, or live (ie, production)? */
define('SS_ENVIRONMENT_TYPE', 'dev');

/* Database connection */
define('SS_DATABASE_SERVER', '{DB_SERVER}');
define('SS_DATABASE_USERNAME', '{DB_USERNAME}');
define('SS_DATABASE_PASSWORD', '{DB_PASS}');

/* Configure a default username and password to access
the CMS on all sites in this environment. */

define('SS_DEFAULT_ADMIN_USERNAME', '{ADMIN_USERNAME}');
define('SS_DEFAULT_ADMIN_PASSWORD', '{ADMIN_PASSWORD}');
}
// EOF

V mysite/_config.php namiesto klasického nastavenia databázy píšete:

global $database;
$database = 'silverstripe';
require_once('conf/ConfigureFromEnv.php');

Symlinks

Symlinky sú použiteľné pod linuxom/MacOS a po novom aj windowsoch (vista a vyššie). Winy a Mac nemám otestovaný, no na linuxoch som ich dlho používal veľmi úspešne.

Podstata tkvie v tom, že moduly (adresáre) ako sapphire, cms, userforms sa do projektov nekopírujú, ale len odkazujú na adresár umiestnený inde. Výhody to má dve -> ušetríte priestor na disku (a traffic pri deploymente, ak rovnakú adresárovú štruktúru má aj server) a v prípade akejkolvek závažnej chyby nemusíte meniť x súborov, zmeníte len jeden a táto zmena sa prejaví vo všetkých projektoch, čo odkazujú na túto verziu modulu...

Ak chcete používať symlinky (už doporučujem GIT a funkcionalitu submoduly), tak je potrebné upraviť jeden súbor v module sapphire, inak vám nebudú fungovať správne. Konkrétne sa jedná o túto zmenu:
Súbor: sapphire/core/Core.php -> na riadok 133 (pred riadok if(!defined('BASE_PATH')) {) vložte toto:

define('BASE_PATH', rtrim(dirname(dirname($_SERVER['SCRIPT_FILENAME'])), DIRECTORY_SEPARATOR));

Symlinky som použil na skoro 30-tich SS projektoch a nikdy sa mi nestalo, aby niektoré moduly prestali fungovať, ak boli volané cez Symlinky. Každopádne, je potrebná opatrnosť pri programovaní (hlavne ak napr. vo svojich skriptoch kontrolujete existenciu určitých súborov (napr. súborov v assets adresári)). Vtedy treba použiť takúto konštrukciu (doporučujem aj pri nepoužití symlinkov):

...
if (file_exists(Director::baseFolder() . DIRECTORY_SEPARATOR . $this->Filename)) {
...

Výhoda symlinkov sa ešte viac prejaví, ak na deployment (nahrávanie projektu na produkčný server) použijete aplikáciu rsync, kde môžete symlinky kopírovať ako symlinky (čiže na serveri je rovnaká adresárová štruktúra, kde sa moduly nachádzajú). Viac o deployment stratégiách v samostatnom článku.

GIT/SVN

Manažovanie projektu cez verzionovací/revízny kontrolný systém (GIT, SVN, mercurial a i.) nie je také priamočiare a jedoduché. Bude potrebné dlhšie štúdium i testovanie ;) V každom prípade však doporučujem používať jednu z aplikácii minimálne z toho dôvodu, aby ste sa mohli vrátiť k akémukoľvek minulému stavu.

Ak chcete použiť SVN aj na správu projektu, jediným vodítkom vám musí byť táto diskusia na google groups, kde sa pojednáva o použiti svn:externals.

Ja som začal používať GIT a submoduly. Zatiaľ sa jedná o pár projektov (okrem iných aj source tohto portálu, kt. je umiestnený na githube: https://github.com/silverstripesk/SilverStripe.sk), čiže by som nerád doporučoval niečo, čo nemám 100% otestované. So svojimi skúsenosťami vás budem informovať v samostatnom článku...


Komentáre

Tento článok neobsahuje komentáre.

komentárový systém: Disqus