Анонс envbox 0.2.0
О пакете, позволяющем определить тип окружения и работать с его переменными.
В прошлое воскресенье опубликовал новый пакет — envbox.
С его помощью можно упростить задачу определения типа окружения, а также работу с его переменными.
Допустим, у вас имеется приложение, которое в зависимости от окружения, по-разному функционирует, используя различные настройки: для окружения разработки используются одни, а для боевого — другие). Вот как можно определить его тип при помощи envbox:
Таким образом, мы не только определили тип текущего окружения, но и считали интересующие нас данные.
Довольно частым сценарием является хранение настроек для различных типов окружения в различных модулях, например настройки Django-проекта могут быть разбиты по типам окружения следующим образом:
При таком раскладе файлы с настройками под конкретное окружение (
В классическом варианте для подгрузки нужного модуля мы передаём имя желаемого модуля в переменной окружения
Вот, вкратце, что умеет envbox. О том, как настроить под свои нужды механизмы определения типа окружени и о многом другом, можно узнать в документации (англ.) — http://envbox.readthedocs.io/.
Проект разрабатывает открыто — https://github.com/idlesign/envbox.
Желающие могут присоединяться.
Хорошего вам окружения.
С его помощью можно упростить задачу определения типа окружения, а также работу с его переменными.
Допустим, у вас имеется приложение, которое в зависимости от окружения, по-разному функционирует, используя различные настройки: для окружения разработки используются одни, а для боевого — другие). Вот как можно определить его тип при помощи envbox:
from envbox import get_environment
# Автоматически определим объект окружения.
# По умолчанию тип окружения считывается из
# 1. Переменной окружения PYTHON_ENV
;
# 2. Содержимого файла environment
в рабочей директории.
# Однако всё это можно настроить.
env = get_environment()
env.name # Наименование типа окружения: development
env.is_production # Боевое ли это окружение: False
env.get('HOME') # Содержимое переменной HOME: /home/idle/
env.getmany('PYTHON') # Переменные, начинающихся с PYTHON: {'UNBUFFERED': '1', 'PATH': ...}
env.getmany_casted('PYTHON') # То же, но с авто-приведением типов {'UNBUFFERED': 1, 'PATH': ...}
Таким образом, мы не только определили тип текущего окружения, но и считали интересующие нас данные.
Довольно частым сценарием является хранение настроек для различных типов окружения в различных модулях, например настройки Django-проекта могут быть разбиты по типам окружения следующим образом:
При таком раскладе файлы с настройками под конкретное окружение (
settings_production
, settings_development
, settings_testing
) обычно импортируют базовые настройки из settings_base
и дополняют/изменяют их нужным образом. В классическом варианте для подгрузки нужного модуля мы передаём имя желаемого модуля в переменной окружения
DJANGO_SETTINGS_MODULE
, но иногда очень удобно иметь единую точку (модуль) конфигурирования, например, чтобы всегда подгружать settings
, а уж он сам пусть подгружает модуль для текущего окружения. Такого можно добиться при помощи envbox: # Файл settings.py будет служить единой точкой конфигурирования.
from envbox import import_by_environment
# Нижеследующая команда определит тип окружения
# и импортирует его символы (переменные, функции и др.)
# прямо сюда.
import_by_environment()
Вот, вкратце, что умеет envbox. О том, как настроить под свои нужды механизмы определения типа окружени и о многом другом, можно узнать в документации (англ.) — http://envbox.readthedocs.io/.
Проект разрабатывает открыто — https://github.com/idlesign/envbox.
Желающие могут присоединяться.
Хорошего вам окружения.
На заметку
У нас есть представительство во ВКонтакте. Ссылка в самом низу страницы.