Перейти к содержанию

Environments Masonite

Переменные окружения в Masonite определяются в файле .env и должны содержать все переменные, необходимые для вашего проекта.

У вас может быть несколько файлов, которые загружаются при первом запуске сервера. Часто полезно иметь разные значения переменных в зависимости от среды, в которой работает приложение (локально, во время тестов или на боевом сервере).

Также может быть полезно иметь больше глобальных переменных окружения, которые можно использовать в вашей команде для сторонних сервисов, таких как Stripe или Mailgun. Так же иметь больше конкретных настроек для разработчиков, таких как подключения к базе данных, s3 и т.д.

В этой документации мы рассмотрим, как настроить environments.

Безопасность

Переменные окружения должны быть установлены для каждого проекта внутри вашего файла .env.

Никогда не добавляйте файлы .env в систему управления версиями! Если кто-то получит доступ к вашему репозиторию, это будет угрозой безопасности, поскольку конфиденциальные учетные данные будут раскрыты.

Вот почему по умолчанию .env и .env.* находятся в файле .gitignore, поэтому вам не следует беспокоиться о том, что эти файлы случайно будут добавлены в репозиторий.

Начало

При новой установке Masonite файл .env.example, расположен в корневом каталоге проекта, будет определять минимальные и общие значения конфигурации для приложения Masonite. В процессе установки этот файл будет скопирован в .env файл.

Если вы установили Masonite, но не видите файл .env, вы можете создать его вручную, скопировав и вставив содержимое из .env-example.

Порядок загрузки

Файлы окружения загружаются в следующем порядке:

  1. Masonite загрузит файл .env, расположенный в корне вашего проекта, в среду Python.
  2. Masonite будет искать переменную APP_ENV внутри уже загруженного файла .env. Если он определен, он попытается загрузить файл .env.{APP_ENV}, соответствующий имени среды.

Например, если в APP_ENV установлено значение local, Masonite дополнительно загрузит файл .env.local.

.env

APP_ENV=local
Когда сервер будет готов, все эти переменные будут загружены в текущую среду, чтобы к ним можно было получить доступ в различных файлах конфигурации Masonite или непосредственно с помощью env().

Определение переменных

Если некоторые переменные содержат пробелы, вы должны поместить содержимое переменной в двойные кавычки:

APP_NAME="Masonite test project"

Чтение переменных

os.getenv()

Вы можете использовать стандартный метод Python os.getenv() для получения значения переменной среды. Это выглядит как:

import os

is_debug = os.getenv("APP_DEBUG") #== "True" (str)

Обратите внимание, что этот метод не делает приведение типов, поэтому здесь мы получили строку вместо логического значения.

env()

Вы также можете использовать помощник Masonite env для чтения значения переменной. Это выглядит как:

from masonite import env

is_debug = env("APP_DEBUG", False) #== True (bool)

Обратите внимание, что вы можете указать значение по умолчанию, если переменная среды не определена. Значение по умолчанию "". Для удобства этот помощник выполняет приведение типов.

Примеры приведения типов переменных:

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:

from masonite import env

env('APP_DEBUG', False, cast=False) #== "False" (str)

Получение текущей среды

Текущая среда Masonite определяется через переменную APP_ENV, расположенную в вашем файле .env. Вы можете легко получить к ней доступ с помощью environment():

APP_ENV=local

app.environment() #== local
При выполнении тестов среда будет установлена как testing. Вы можете использовать is_running_tests(), чтобы проверить, является ли среда testing:
app.is_running_tests() #== True if running tests
Вы также можете проверить, является ли среда, средой разработки:
app.is_production() #== True if APP_ENV=production

Режим отладки

Режим отладки управляется переменной 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

Никогда не разворачивайте приложение на боевом сервере с включенным режимом отладки!