Size: a a a

2020 September 16

VS

Vladimir Sekisov in pro.elixir
Ihor Katkov
Ребят, я думаю этот новый конфиг чисто для каких-то конкретных use cases
идея вроде бы простая -
унифицировать старт
через mix и через релиз,
чтобы release.ex не был
хаком ради релиза.
источник

VS

Vladimir Sekisov in pro.elixir
DooDLeZz*
Народ, всем доброго времени суток. Вопрос по фениксу, может кто реализовывал подобное. В общем, есть umbrella проект с несколькими phoenix приложениями внутри. У одного приложения (Master), Endpoint запущен с server: true, у остальных (App1, App2) приложений он false.

Вопрос заключается в следующем: Когда я на одной из страниц в Master генерирую ссылку, вызывая App1Web.Router.Helpers.page_path(conn, :index), и при этом, на одной из страниц App1 генерирую ссылку MasterWeb.Router.Helpers.page_path(conn, :index), то при компиляции я получаю предупреждение вида:
function App1.Router.init/1 is undefined (module App1.Router is not available). При этом компиляция происходит, ссылки корректно генерируются а приложение работает в штатном режиме. Кто нибудь в курсе с чем это связано и как "кошерно" решить данную задачу, настроив перелинковку между несколькими phoenix приложениями внутри одного umbrella проекта, чтобы компилятор не ругался?

ЗЫ: эти warning-и появляются только раз. При повторной компиляции предупреждение не возникает.
каждое приложение компилируется со своим
списком зависимостей,
App1, очевидно, нет в зависимостях у Master,
в runtime загружены и видны все модули,
потому все работает.
источник

D

DooDLeZz* in pro.elixir
Vladimir Sekisov
каждое приложение компилируется со своим
списком зависимостей,
App1, очевидно, нет в зависимостях у Master,
в runtime загружены и видны все модули,
потому все работает.
Собственно это я и предполагал, но остается открытым вопрос как теперь реализовать перелинковку между приложениями, которые фактически находятся на одном и том же «уровне»
источник

VS

Vladimir Sekisov in pro.elixir
вынести Master в параметры
зависимых приложений, чтобы избежать циклических
зависимостей, все приложения определить в зависимости Master
источник

D

DooDLeZz* in pro.elixir
Vladimir Sekisov
вынести Master в параметры
зависимых приложений, чтобы избежать циклических
зависимостей, все приложения определить в зависимости Master
А как в таком случае master будет создавать ссылки на другие приложения? появится та же самая ошибка, но уже на стороне master
источник

VS

Vladimir Sekisov in pro.elixir
если вы добавили app1 в deps master, то не будет,
ну и еще в extra_applications
к master его надо добавить.
источник

D

DooDLeZz* in pro.elixir
не совсем понял, получается что необходимо добавить  master в зависимости app1, a app1 в завимости мастера?
источник

D

DooDLeZz* in pro.elixir
это же цикл
источник

VS

Vladimir Sekisov in pro.elixir
вроде бы я сказал - master в параметры app1, а не зависимости
источник

D

DooDLeZz* in pro.elixir
Vladimir Sekisov
вроде бы я сказал - master в параметры app1, а не зависимости
можете показать пример?
источник

D

DooDLeZz* in pro.elixir
вопрос конечно нубский, но я не совсем понимаю как вынести приложение в параметры
источник

SK

Suren Kirakosyan in pro.elixir
Alex Bubnov
Откуда может взяться "заранее приемлемая архитектура", если приемлемость архитектуры определена в моменте?
Из опыта.
источник

SK

Suren Kirakosyan in pro.elixir
Pavel
Приемлемая архитектура может быть только когда у тебя есть фиксированное тз и она будет приемлема для него, хороший архитектор делает так, что вносить изменения в эту архитектуру можно на O(1) в идеальном случае (читай: архитектура не тормозит изменение бизнес логики)
Согласен с этим!
источник

VS

Vladimir Sekisov in pro.elixir
config :app1,
  master_app: MasterWeb
где-то в endpoint:
@app app1
@master_app Application.compile_env!(
@app, :master_app)

у master в mix.exs:
def application do
extra_applications: [:app1, ...]
end

defp deps do
[{:app1, in_umbrella: true}]
end
```
как-то так
источник

D

DooDLeZz* in pro.elixir
благодарю, ушел проверять)
источник

D

DooDLeZz* in pro.elixir
Vladimir Sekisov
config :app1,
  master_app: MasterWeb
где-то в endpoint:
@app app1
@master_app Application.compile_env!(
@app, :master_app)

у master в mix.exs:
def application do
extra_applications: [:app1, ...]
end

defp deps do
[{:app1, in_umbrella: true}]
end
```
как-то так
Корректировки внес, я так понимаю, теперь и код генерации ссылок тоже надо корректировать, с учетом вызова @master_app?
источник

D

DooDLeZz* in pro.elixir
К слову проблема осталась
источник

VS

Vladimir Sekisov in pro.elixir
DooDLeZz*
Корректировки внес, я так понимаю, теперь и код генерации ссылок тоже надо корректировать, с учетом вызова @master_app?
естественно, это же не магия
источник

D

DooDLeZz* in pro.elixir
И как должны генерироваться ссылки в таком случае?
источник

VS

Vladimir Sekisov in pro.elixir
apply или перемееная вместо
пути модуля.
Того, описание языка хоть как-то читали?
источник