Меняем версию ядра Laravel налету

30th Сентябрь 2012 | Категории: Laravel | Метки:

Laravel – динамично развивающийся фреймворк. Новые версии выходят часто. Как проверить работоспобность новой версии на боевом сайте? У меня есть сразу три элегантных решения.

Чтобы лучше понять суть решения, заглянем в path.php. В этом файле происходит определение местоположения всех каталогов фреймворка

// --------------------------------------------------------------
// The path to the application directory.
// --------------------------------------------------------------
$paths['app'] = 'application';
 
// --------------------------------------------------------------
// The path to the Laravel directory.
// --------------------------------------------------------------
$paths['sys'] = 'laravel';
 
// --------------------------------------------------------------
// The path to the bundles directory.
// --------------------------------------------------------------
$paths['bundle'] = 'bundles';
 
// --------------------------------------------------------------
// The path to the storage directory.
// --------------------------------------------------------------
$paths['storage'] = 'storage';
 
// --------------------------------------------------------------
// The path to the public directory.
// --------------------------------------------------------------
$paths['public'] = 'public';

Соответственно, в каталоге laravel находится ядро фреймворка.

Суть идеи
Для каждой версии фреймворка создаем отдельный каталог.
Например, помимо laravel я создал:
lara323
lara326
lara327
lara328

Модифицируем файл paths.php. Добавим проверку секретного GET параметра:

if (isset ($_GET['my_secret_key']))
	$sys = $_GET['my_secret_key'];
else
	$sys = 'laravel';
 
$paths['sys'] = $sys;

Теперь на любой странице вашего проекта можно добавить GET-параметр и сменить версию laravel налету:
http://mysite.local/blog/show/?my_secret_key=lara326
http://mysite.local/blog/show/?my_secret_key=lara328

Для любителей тернарных операторов можно записать так:

$sys = (isset ($_GET['my_secret_key'])) ? $_GET['my_secret_key'] : 'laravel';

Если же необходимо проверить весь сайт на новой версии, а добавлять в URL секретный ключ не хочется, можно использовать другое решение. Проверяем IP, и для адреса разработчика заменяем версию ядра:

if ($_SERVER['REMOTE_ADDR'] == '45.8.11.32')
	$sys = 'lara328';
 
$paths['sys'] = $sys;

И еще идея для самостоятельной реализации. Можно установить секретную куку разработчика и проверять её наличие через $_SERVER['HTTP_COOKIE'].

Subscribe without commenting


  1. Dmitrij
    30th Сентябрь 2012 в 20:42

    К fuelphp уже не лежит душа? 🙂

  2. Тарлюн Максим
    2nd Октябрь 2012 в 18:59

    Dmitrij :

    К fuelphp уже не лежит душа? :)

    Нет предела совершенству. Идеального фреймворка — тоже нет. Сделал проект на fuel. Посмотрел. Следующий делаю на laravel. Они очень близки по логике.

    Касаемо статьи — подобное решение я использовал еще 4 года назад в проекте на Code Igniter. Скажу больше. Эти решения можно использовать в любом фреймворке.