Size: a a a

2020 February 03

IK

Ilya Kaznacheev in pro.elixir
Пошел доки курить
источник

V

V in pro.elixir
Ilya Kaznacheev
def application do
   [
     applications: [:mongodb, :poolboy],
     mod: {Schedoo.Application, []},
     extra_applications: [:logger, :runtime_tools]
   ]
 end
Ключ applications вообще уместен?
источник

IK

Ilya Kaznacheev in pro.elixir
V
Ключ applications вообще уместен?
Я не уверен, взял из доков к монге
В доках к миксу не могу найти возможные ключи
источник

IK

Ilya Kaznacheev in pro.elixir
Вот про это говорю: https://hexdocs.pm/mongodb/readme.html
источник

V

V in pro.elixir
Ilya Kaznacheev
Я не уверен, взял из доков к монге
В доках к миксу не могу найти возможные ключи
Читай доки к Application, а не к монге. Возможно нужно перенести из applications в extra_applications
источник

PG

Pïg Grëënëst in pro.elixir
Ещё один споткнулся об эти ключи, доколе?!
источник

PG

Pïg Grëënëst in pro.elixir
Ilya Kaznacheev
Господа, подскажите, пожалуйста. Глупый вопрос новичка в фениксе

Создал чистое приложение без экто. Добавил в зависимости mongodb и pollboy (по докам самого mongodb драйвера)

Без зависимостей все работает. С зависимостями падает с ошибкой:

** (Mix) Could not start application schedoo: Schedoo.Application.start(:normal, []) returned an error: shutdown: failed to start child: SchedooWeb.Endpoint
   ** (EXIT) shutdown: failed to start child: {:ranch_listener_sup, SchedooWeb.Endpoint.HTTP}
       ** (EXIT) exited in: :gen_server.call(:ranch_server, {:set_new_listener_opts, SchedooWeb.Endpoint.HTTP, 16384, %{max_connections: 16384, num_acceptors: 100, socket_opts: [port: 4000]}, %{env: %{dispatch: [{:_, [], [{:_, [], Phoenix.Endpoint.Cowboy2Handler, {SchedooWeb.Endpoint, []}}]}]}, stream_handlers: [Plug.Cowboy.Stream]}, [SchedooWeb.Endpoint.HTTP, :ranch_tcp, %{max_connections: 16384, num_acceptors: 100, socket_opts: [port: 4000]}, :cowboy_clear, %{env: %{dispatch: [{:_, [], [{:_, [], Phoenix.Endpoint.Cowboy2Handler, {SchedooWeb.Endpoint, []}}]}]}, stream_handlers: [Plug.Cowboy.Stream]}]})
           ** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started


Не пойму из описания, что не так. Нужно в супервизор добавить монгу, или что?
cowboy, plug_cowboy или phoenix есть в зависимостях?
источник

IK

Ilya Kaznacheev in pro.elixir
Pïg Grëënëst
cowboy, plug_cowboy или phoenix есть в зависимостях?
Да
Добавил в extra_applications, почитал про applications и extra_applications, пока ничего не понял. Точнее понял, что эликсир как-то неявно поднимает зависимости из deps, и их можно явно прописать в extra_applications, но почему одно работает, а другое нет - пока не дошло
источник

PG

Pïg Grëënëst in pro.elixir
Это пиздец кромешный -- мнемоник нету, найти этот момент в доках очень трудно, ещё и в эрланге ключи отличаются, если я все правильно помню.
источник

IK

Ilya Kaznacheev in pro.elixir
Я вот на такую статью наткнулся: https://www.amberbit.com/blog/2017/9/22/elixir-applications-vs-extra_applications-guide/
источник

IK

Ilya Kaznacheev in pro.elixir
Немного прояснило, но не все

Ну и в книжке читал, но глубоко не вник, тем более, что довольно запутанно
источник

PG

Pïg Grëënëst in pro.elixir
Два простых правила:
1) Не указывай applications, он будет автоматически собран из deps
2) В extra_applications указывай приложения из стандартной поставки
источник

PG

Pïg Grëënëst in pro.elixir
В стандартной библиотеке несколько приложений, по дефолту будут запущены только kernel и stdlib, все остальное, например logger, надо через extra_applications требовать
источник

АН

Алексей Новоселов in pro.elixir
да все правильно в статье, эликсир автоматически фигачит список applications из deps, если он не указан явно. В extra_applications нужно писать либо эрланг-аппы, либо депсы с флагом optional: true
источник

IK

Ilya Kaznacheev in pro.elixir
Подскажите, а какой принципиальный подход к чтению конфигов в эликсире/фениксе?
источник

IK

Ilya Kaznacheev in pro.elixir
Из файла и/или из окружения
источник

IK

Ilya Kaznacheev in pro.elixir
Чтобы как-то в одном месте это делать, не размазывать по приложению
источник

АН

Алексей Новоселов in pro.elixir
оба. Из файлов это compile time, из окружения это runtime
источник

PG

Pïg Grëënëst in pro.elixir
В принципе здесь все расписано: https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html
источник

АН

Алексей Новоселов in pro.elixir
ну т.е. из файлов и рантайм можно, но считается не лучшим решением
источник