2015-05-08 3 views
1

Я добавил li3_docs (https://github.com/UnionOfRAD/li3_docs) в мое приложение, но я не хочу, чтобы эта библиотека загружалась в рабочей среде. Каков наилучший способ предотвращения доступности документов в производственной среде? Первоначально я думал, добавив следующую строку в мой конфигурации/бутстрапе/libraries.php:Загрузка литиевой библиотеки только в определенных средах

if(!Environment::is('production')) { 
    Libraries::add('li3_docs'); 
} 

Это не работает, потому что класс окружающей среды еще не был загружен, и я чувствую, что это не разумно загрузите это перед загрузчиком библиотек. Итак, каков наилучший способ сделать это?

ответ

1

Хакерный способ: добавить Environment::set(new \lithium\net\http\Request()) перед добавлением библиотек.

Другой способ:

  1. Добавить значение конфигурации при добавлении библиотеки

    Libraries::add('li3_docs', array('devOnly' => true)); 
    
  2. Dispatcher::run Обновление фильтра по умолчанию в app\bootstrap\action.php на что-то вроде этого

    Dispatcher::applyFilter('run', function($self, $params, $chain) { 
        Environment::set($params['request']); 
    
        foreach (array_reverse(Libraries::get()) as $name => $config) { 
        $devOnly = isset($config['devOnly']) && $config['devOnly']; 
        $devOnly = $devOnly && Environment::is('development'); 
        if ($name === 'lithium' || $devOnly) { 
         continue; 
        } 
        $file = "{$config['path']}/config/routes.php"; 
        file_exists($file) ? include $file : null; 
        } 
        return $chain->next($self, $params, $chain); 
    });