Открыть список
Как стать автором
Обновить

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

Perl
Сегодня зарелизен свеженький модуль для работы с .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! :)
Теги:perlyamlconfigurationteam jobmodern
Хабы: Perl
Всего голосов 15: ↑15 и ↓0 +15
Просмотры2.2K

Похожие публикации

Python-разработчик с нуля
18 мая 202156 940 ₽Нетология
SQL и получение данных
18 мая 202120 230 ₽Нетология
Аналитик BI
18 мая 202160 000 ₽Нетология
Профессия Android-разработчик
18 мая 202185 200 ₽SkillFactory
Введение в цифровой дизайн
18 мая 202132 340 ₽Нетология

Лучшие публикации за сутки