Elixir - это скомпилированный язык, и даже то, что имеет расширение .exs
и то, что называется script , должно быть скомпилировано в BEAM перед выполнением.
Проблема import MyModule
не может быть скомпилировано, потому что в данный момент компилятор ничего не знает об этом модуле. Хорошая новость заключается в том, что мы можем обмануть компилятор.
Поместите весь необходимый код в отдельный файл:
# script.ex
import MyModule
my_function()
и используйте скрипт runner.exs
, который будет компилировать оба:
# runner.exs
Code.eval_file("module.ex")
# IO.inspect Code.ensure_loaded(MyModule)
Code.eval_file("script.ex")
Теперь runner.exs
с удовольствием позвонит бы my_function()
.