Как import_config/1
работает
С Mix.Config # import_config / 1 :
Импортирует конфигурацию из заданного файла или файлов.
[...]
Если path_or_wildcard не подстановочный знак, а путь к отдельному файлу, тогда этот файл импортируется; если файл не существует, возникает ошибка.
Если путь / подстановочный знак является относительно путь / подстановочный знак, он будет расширен относительно каталога, в котором находится текущий файл конфигурации.
Как Mix.env/0
работает
С Mix # env / 0 :
Возвращает среду Mix.
Когда ваше приложение запускается, оно будет считывать значение из переменной среды MIX_ENV
или устанавливать :dev
, если переменная среды не установлена. Комбинированная реализация .
Задача, запускаемая при вызове mix test
, заставляет Mix установить значение по умолчанию для среды :test
через атрибут @preferred_cli_env
.
Объединение import_config/1
и Mix.env/1
Наличие строки кода, эквивалентной
import_config "#{Mix.env()}.exs"
будет оцениваться во время компиляции (при первом запуске mix test
) до
import_config "test.exs"
Поскольку путь равен относительно , он будет искать файл test.exs
в том же каталоге, где находится файл, содержащий вызов import_config
.
В вашем случае это /Users/romenigld/workspace/elixir/ebooks/issues/config/
, поэтому вы должны создать действительный файл конфигурации в /Users/romenigld/workspace/elixir/ebooks/issues/config/test.exs
, а также для всех других сред, в которых должно работать ваше приложение (возможно, dev
и prod
).
Вы можете обойтись без создания файлов конфигурации для всех сред, проверив среду перед вызовом import_config
:
unless Mix.env() == :prod do
import_config("#{Mix.env()}.exs")
end