Environments Masonite
Переменные окружения в Masonite определяются в файле .env
и должны содержать все переменные,
необходимые для вашего проекта.
У вас может быть несколько файлов, которые загружаются при первом запуске сервера. Часто полезно иметь разные значения переменных в зависимости от среды, в которой работает приложение (локально, во время тестов или на боевом сервере).
Также может быть полезно иметь больше глобальных переменных окружения, которые можно использовать в вашей команде для сторонних сервисов, таких как Stripe или Mailgun. Так же иметь больше конкретных настроек для разработчиков, таких как подключения к базе данных, s3 и т.д.
В этой документации мы рассмотрим, как настроить environments.
Безопасность
Переменные окружения должны быть установлены для каждого проекта внутри вашего файла .env
.
Никогда не добавляйте файлы .env
в систему управления версиями! Если кто-то получит доступ к
вашему репозиторию, это будет угрозой безопасности, поскольку конфиденциальные учетные данные
будут раскрыты.
Вот почему по умолчанию .env
и .env.*
находятся в файле .gitignore
, поэтому вам не следует
беспокоиться о том, что эти файлы случайно будут добавлены в репозиторий.
Начало
При новой установке Masonite файл .env.example
, расположен в корневом каталоге проекта,
будет определять минимальные и общие значения конфигурации для приложения Masonite.
В процессе установки этот файл будет скопирован в .env
файл.
Если вы установили Masonite, но не видите файл .env
, вы можете создать его вручную, скопировав и
вставив содержимое из .env-example
.
Порядок загрузки
Файлы окружения загружаются в следующем порядке:
- Masonite загрузит файл
.env
, расположенный в корне вашего проекта, в среду Python. - Masonite будет искать переменную
APP_ENV
внутри уже загруженного файла.env
. Если он определен, он попытается загрузить файл.env.{APP_ENV}
, соответствующий имени среды.
Например, если в APP_ENV
установлено значение local
, Masonite дополнительно загрузит файл .env.local
.
env()
.
Определение переменных
Если некоторые переменные содержат пробелы, вы должны поместить содержимое переменной в двойные кавычки:
Чтение переменных
os.getenv()
Вы можете использовать стандартный метод Python os.getenv()
для получения значения переменной среды.
Это выглядит как:
Обратите внимание, что этот метод не делает приведение типов, поэтому здесь мы получили строку вместо логического значения.
env()
Вы также можете использовать помощник Masonite env
для чтения значения переменной. Это выглядит как:
Обратите внимание, что вы можете указать значение по умолчанию, если переменная среды не определена.
Значение по умолчанию ""
. Для удобства этот помощник выполняет приведение типов.
Примеры приведения типов переменных:
Env Var значение | Приводит к (тип) |
---|---|
5432 | 5432 (int) |
true | True (bool) |
None (None) | |
"" | "" (str) |
True | True (bool) |
false | False (bool) |
False | False (bool) |
smtp | smtp (string) |
Если вы не хотите приводить значение, вы можете указать третий параметр cast=False
:
Получение текущей среды
Текущая среда Masonite определяется через переменную APP_ENV
, расположенную в вашем файле .env
.
Вы можете легко получить к ней доступ с помощью environment()
:
testing
. Вы можете использовать is_running_tests()
,
чтобы проверить, является ли среда testing
:
Вы также можете проверить, является ли среда, средой разработки:
Режим отладки
Режим отладки управляется переменной APP_DEBUG
, используемой в файле config/application.py
.
При создании нового проекта включается режим отладки (APP_ENV=True). Он должен оставаться включенным
для локальной разработки.
Когда включен режим отладки, все исключения (или не найденные маршруты) отображаются в виде HTML-страницы ошибок отладки, содержащей много информации, которая поможет вам отладить проблему. Если этот параметр отключен, отображаются страницы ошибок по умолчанию 500, 404, .403
Вы можете проверить, включен ли режим отладки с помощью is_debug()
или config()
:
app.is_debug() #== True
from masonite.configuration import config
config("application.debug") #== True
Note
Никогда не разворачивайте приложение на боевом сервере с включенным режимом отладки!