PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
You have to
login
to post a new comment.
Laravel: разные окружения на одном хосте / multi env on one host
November 17, 2014
Стандартный механизм настройки окружения описан тут. Простой он как двери в милиции, опирается на ответ gethostname() и выглядит вот так
$env = $app->detectEnvironment([
'env-one-name' => array('hostname1.local'),
'env-two-name' => array('hostname2')
]);
Все удобно, понятно. Одно "но" заключается в том, что на одном хосте при таких условиях два окружения не потестируешь. Решение я предлагаю такое
$env = $app->detectEnvironment(function(){
// by path
if (stristr(__DIR__, 'demo-env-folder-name')) {
return 'demo';
}
// by hostname
$hostname = gethostname();
switch ($hostname) {
case "hostname1.local":
return 'env-one-name';
break;
case "hostname2":
return 'env-two-name';
break;
default:
return 'production';
break;
}
});
Таким образом будем в текущем пути искать название папки для выбранного окружения, то есть для папки /the/path/to/project/demo-env-folder-name будет включено окружение demo, а для других папок будет использоваться определение по хосту, то есть оригинальное. Конечно, есть определенная опасность словить не то окружение после переноса проекта третьими гражданами (которые не в курсе таких поворотов сюжета), но оповещение коллег о таких вещах я считаю должно быть на совести разработчиков. Да и поправить если что легко.
Comments
No comments here yet.