Использование Code.eval_file
Другой вариант - оценить файл как файл кода, используя Code.eval_file и получите результат в виде конструкции эликсира.
Файл конфигурации config1.ex
:
%{configKey1: "configValue1", configKey2: "configValue2"}
Чтение файла:
{content, _} = Code.eval_file("config1.ex")
* при оценке файла кода необходимо учитывать соображения безопасности.
Относительно использования Mix.Config.read!
в правильном ответе @bitwalker
файл конфигурации должен быть в определенном формате:
[
appName: [key1: "val1", key2: "val2"]
]
В Mix.Config. читать код, он пытается проверить содержимое и ожидать, что будет основной список ключевых слов [ {}, {}.. ]
, который включает ключи, которые также имеют значение типа список ключевых слов.
Код не длинный:
def validate!(config) do
if is_list(config) do
Enum.all?(config, fn
{app, value} when is_atom(app) ->
if Keyword.keyword?(value) do
true
else
raise ArgumentError,
"expected config for app #{inspect app} to return keyword list, got: #{inspect value}"
end
_ ->
false
end)
else
raise ArgumentError,
"expected config file to return keyword list, got: #{inspect config}"
end
end
Мы можем обойти и использовать первый ключ, который не является атомом, а затем проверка остановится, но не выбросит:
[
{"mockFirstKey", "mockValue"},
myKey1: "myValue1",
myKey2: "myValue2"
]
person
elpddev
schedule
10.05.2017
config/config.exs
. Если вы загрузите последнюю версию Elixir и создадите новый проект, вы увидите новый файл с комментариями о том, как его использовать. - person José Valim   schedule 29.05.2014