#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
варианта. Очень полезно.