Возможно ли запустить интерактивную оболочку elixir и немедленно вызвать функцию?

#elixir #elixir-iex

#elixir #elixir-iex

Вопрос:

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

 iex -S mix
  

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

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

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

 iex()> import MyApp.Module

iex()> alias MyApp.Module.OtheName

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

был бы способ сделать это автоматически.

Ответ №1:

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

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

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

Комментарии:

1. Интересно, что это ведет себя иначе, чем просто передача имени скрипта через iex scripts.exs . Передача имени скрипта не сохраняет назначенные переменные, но .iex.exs сохраняет. Вы также можете настроить имя файла с помощью --dot-iex (странное название опции).

2. Ах, я не знал этого --dot-iex варианта. Очень полезно.