Использование приложений elixir для программ, которые запускаются только один раз

При запуске приложения возвращаемое значение должно быть pid или ошибкой.

Можно ли использовать приложения для программ, предназначенных для обработки только один раз. Что-то типа.

defmodule MyApp do
  use Application

  def start(_type, _args) do
    # Do stuff
    {:done, :normal}
  end
end

person Peter Saxton    schedule 03.10.2016    source источник
comment
Приложения предназначены для долго работающих программ, которые должны быть надежными... если это предназначено для одноразового использования, как, например, консольный скрипт, почему бы вам не смоделировать его как скрипт (.exs?). И если она должна быть надежной, почему вас беспокоит модель приложения?   -  person bottlenecked    schedule 03.10.2016
comment
Зачем вам нужно приложение OTP для этого?   -  person Aleksei Matiushkin    schedule 03.10.2016
comment
Таким образом, ответ заключается в том, чтобы не использовать приложение и сделать эскриптум? Я не совсем уверен, что делает проект правильного микса. возможно, вопрос в том, как выглядит смешанный проект для однократной программы.   -  person Peter Saxton    schedule 03.10.2016
comment
Вероятно, вам не нужно менять способ микширования вашего проекта. Если вам нужно остановить приложение, почему бы просто не Application.stop когда закончишь?   -  person bottlenecked    schedule 03.10.2016


Ответы (1)


Ты все усложняешь, @Peter. Вам нужен скрипт Elixir (файл exs). Начните с этого примера:

defmodule MyApp do
  def my_test_func do
    IO.puts "Hello world!"
  end
end

MyApp.my_test_func

Сохраните этот код как test1.exs. Затем вы можете запустить его из командной строки через elixir test1.exs Я хочу сказать, что вам не нужен gen_server для простого скрипта.

Вы можете узнать больше о взаимодействии с ОС в в System документах, и вы можете увидеть немного подробнее о скриптах Elixir здесь: http://elixir-lang.org/getting-started/introduction.html#running-scripts

person Onorio Catenacci    schedule 03.10.2016