Как настроить CodeIgniter для автоматического обнаружения машины разработки и реальной машины? - PullRequest
1 голос
/ 23 января 2010

Я занимаюсь разработкой на своем ноутбуке с Windows, но мне нужно проверить свою разработку на своем общем хостинге на Linux. Я набросал следующее вместо обычной строки $application_path = "application";.

$env['laptop']['ip'] = '127.0.0.1'; $env['laptop']['host'] = 'MATT-WINDOWS7'; $env['laptop']['path'] = 'private';</p> <p>$env['mattpotts']['ip'] = '12.34.56.78'; $env['mattpotts']['host'] = 'my.webhost.com'; $env['mattpotts']['path'] = '../private/blah';

$ip = $_SERVER['SERVER_ADDR']; $host = php_uname('n'); foreach($env as $e) if($e['ip'] == $ip && $e['host'] == $host) $application_folder = $e['path']; unset($env); if(!isset($application_folder)) die('application folder not set');

... которая отлично подходит для установки пути к приложению, но теперь у меня возникают проблемы с необходимостью настройки базы данных для каждой среды.

Я могу заставить его работать с несколькими простыми словами, но мне было интересно, есть ли для этого наилучшее практическое решение.

Приветствия

Ответы [ 5 ]

6 голосов
/ 23 января 2010

Использовать контроль версий, такой как Subversion . Разверните один файл конфигурации в своей тестовой среде и проверьте измененную версию в своей среде разработки. Просто скажите клиенту, чтобы он не фиксировал эти изменения конфигурации, чтобы он не попал в вашу среду тестирования / производства.

Это определенно лучшее практическое решение:)

P.S. Если вы не хотите настраивать сервер Subversion, всегда есть размещенные решения, такие как Beanstalk , а если вы работаете в Windows, TortoiseSVN - удобный клиент.

2 голосов
/ 23 января 2010

Если вы не хотите настраивать Subversion, вы всегда можете определить, на каком сайте вы находитесь, взглянув на SERVER_NAME. В прошлом на сайте CI я использовал следующее в моем файле config.php, чтобы выяснить, что такое серверы разработки и разработки:

if ($_SERVER['SERVER_NAME'] == 'www.mysite.com') {
    $config['log_path'] = '/var/log/site/';
} else {
    $config['log_path'] = '/var/log/dev_site/';
}

Вы можете использовать это где угодно, чтобы иметь разные переменные в зависимости от среды. Сказанное в вашем коде, такое жесткое кодирование - не всегда лучшая идея.

1 голос
/ 20 ноября 2012

Поскольку решение Фила больше недоступно, вот еще одно решение, которое предоставит вам точно такое же решение.

Вот ссылка на репозиторий Git: https://github.com/jedkirby/ci-multi-environments, и это краткоеобъяснение модуля: http://jedkirby.com/blog/2012/11/codeigniter-multiple-development-environments

1 голос
/ 14 мая 2010

Вот отличное решение для запуска нескольких производственных сред на одной кодовой базе:

http://philsturgeon.co.uk/news/2009/01/How-to-Support-multiple-production-environments-in-CodeIgniter

0 голосов
/ 12 января 2013

Страница Phil Sturgeons переместилась сюда: http://philsturgeon.co.uk/blog/2009/01/How-to-Support-multiple-production-environments-in-CodeIgniter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...