Можно ли запустить интерактивную оболочку эликсира и немедленно вызвать функцию? - PullRequest
3 голосов
/ 07 апреля 2019

В elixir вы можете использовать оболочку iex с контекстом вашего приложения с помощью следующей команды ...

iex -S mix

Эта команда очень удобна и позволяет нам использовать функции приложения в интерактивной оболочке.

Мне интересно, возможно ли запустить интерактивную оболочку с аргументами или можно ли заставить ваше приложение вызывать некоторые функции, прежде чем пользователь сможет взаимодействовать с оболочкой.

Например, допустим, у меня есть приложение с именем MyApp, и я запускаю его с iex -S mix. Вместо того, чтобы вручную вводить команды в оболочку, например

iex()> import MyApp.Module

iex()> alias MyApp.Module.OtheName

iex()> value = OtherName.function(1234)

был бы способ, чтобы это произошло автоматически.

1 Ответ

4 голосов
/ 07 апреля 2019

Вы можете создать файл .iex.exs в каталоге приложения с кодом для запуска при запуске.Со страницы руководства iex:

После запуска iex он ищет файл .iex.exs и, в случае успеха, выполняет код из файла в контексте оболочки,Сначала поиск начинается в текущем рабочем каталоге, затем, если необходимо, он продолжается в домашнем каталоге.

Но учтите, что если вы поместите в этот файл код, специфичный для приложения, он будет работать только корректноесли вы выполняете iex -S mix, но не тогда, когда вы выполняете только iex.

...