Pull to refresh

Config::YAML::Modern — работа с .yaml конфигурационными файлами на стероидах

Reading time2 min
Views3.7K
Сегодня зарелизен свеженький модуль для работы с .yaml конфигурационными файлами. Как обычно, доступен общественности на github Config::YAML::Modern, в CPAN будет добавлен немного позднее Config::YAML::Modern.
Почему этот модуль может быть вам интересен? Он умеет несколько клевых трюков, например:
  • корректно смерджить пачку .yaml файлов из директории
  • преобразовать file.name.yaml имя файла в { File => { Name => { _content here_ } }
  • предоставляет чумовой path-resolution в dive-стиле qw/File Name inner_hash 0 my_key/

Области применения? Навскидку — конфигурация проекта при коллективной работе!
Интересно? Подробности под катом.

Итак, YAML самый удобный формат разметки для конфигурационных файлов. Он как минимум человеко-читабельный и позволяет делать комментарии (камень в сторону json). Он платформо-независим ( платформа = используемый язык). Он клевый. Use YAML or die!

Уговорил? Двигаемся дальше.
Самая удобная форма вида конфигурации проекта при коллективной работе выглядит как-то так



WTF!!??
Да ладно, все чертовски наглядно — есть main_config ака основная конфигурация проекта и две папки разработчиков, в которых лежат дифы от состояния основной системы.
Первый, meettya, похоже, что-то делает с другим мускулем.
Второй, nic — прикрутил другой сервак pg и что-то делает с системой отправки сообщений клиентам.

Diff is sexy! В любой момент можно понять, насколько твоя среда отличается от общего конфига.

Пример, как пользоваться этой красотой:

use Config::YAML::Modern;
my $directory_main = '/etc/main_config/';
# you are set before in bash "export DEVELOP_CONFIG_DIR=/etc/meettya_config/"
my $directory_develop = $ENV{'DEVELOP_CONFIG_DIR'};
my $config = Config::YAML::Modern->new( key_conversion => 'ucfirst' );
$config->dir_load($directory_main);
if ( defined $directory_develop ){
    $config->dir_add( $directory_develop, 'RIGHT_PRECEDENT' );
}
my $db_mysql_config = $config->dive(qw/Db Mysql/);


Все! Это все, что нужно сделать, чтобы в $db_mysql_config получить хеш с параметрами базы, ну что вы там пишите обычно.
Приведенный пример — самый простой, модуль имеет в запасе еще несколько вкусных плюшек, которые я коряво постарался осветить в документации.
Пользуйтесь с удовольствием и на здоровье!

PS. Замечания, пожелания — шлите в патчах на github! :)
Tags:
Hubs:
+15
Comments6

Articles