Подтвердить что ты не робот

Как читать конфигурационную переменную в Phoenix/Elixir?

Я хотел бы установить заголовок моего приложения в файле my/config/config.exs:

config :my, My.Endpoint,
  url: [host: "localhost"],
  root: Path.dirname(__DIR__),
  secret_key_base: "secret",
  title: "My App"

Как я могу читать title позже, чтобы использовать его в шаблоне? Что-то вроде:

<div>
  Title of my app is <%= ??? %>
</div>

Я попробовал conn.title, и он говорит, что такого ключа нет. Но, когда я пытаюсь conn.secret_key_base, это работает. Почему?

4b9b3361

Ответ 1

Вы можете использовать Application.get_env(:my, :title)

Ответ 2

Функция get_env является частью модуля приложения из ядра Elixir/Erlang.

Эта функция возвращает значение для определенного ключа в среде приложения. Учитывая вашу конфигурацию, вы получите доступ к свойству title следующим образом:

Application.get_env(:my, My.Endpoint)[:title]

Третий параметр предназначен для передачи значения по умолчанию, когда ключ конфигурации не существует.

Ответ 3

если вы посмотрите под капотом, как конфигурация - это просто функция, которая добавляет значения конфигурации в список ключевых слов, а затем вы можете получить к ним доступ в своем приложении.

config/2 берет ключ и сопоставляет его с ключевым словом_list config/3 берет ключ и добавляет ключ с ключевым словом в качестве значения

так как вы используете config/3, он присваивает свой конфигурационный файл под My.Endpoint, это будет работать Application.get_env(:my, My.Endpoint, :title)