Size: a a a

2020 May 15

DR

Dmitry Russ (Aleksan... in pro.elixir
Źmićer Rubinštejn
Попробуй запустить так феникс и сделать repo.get
Нет, это понятно. Но mix help run:

mix run Starts the current application and runs code.

В общем, если нужно стартовать частично приложение (без http части), то мне всё равно кажется логичнее было бы иметь что-то в духе phx.context, который включает всё кроме http listener-а.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Или теперь, если у нас не phonix, а какое-нибудь телекоммуникационное приложение - нужно ввести комманду: mix telecommunication.server и для каждого типа приложение создавать свою специфичную комманду старта?

А если зайти дальше, то как стартовать phoenix + telecommunication (diameter listener) приложение? phx.server по этой логике phoenix-а уже не корректно.

Мне явно симпатизирует вариант иметь универсальную комманду старта приложения, нежели создание под каждый тип приложения свою, либо иметь конфигурационный environment (`MY_APP_HTTP_SERVER=false`) как я привёл пример. Не для phoenix или Rails разработчика - такой путь будет понятнее - на мой субьктивный взгляд.
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
Нет, это понятно. Но mix help run:

mix run Starts the current application and runs code.

В общем, если нужно стартовать частично приложение (без http части), то мне всё равно кажется логичнее было бы иметь что-то в духе phx.context, который включает всё кроме http listener-а.
А мне нужно было наоборот - стартовать с запущенным http, но с выключенным продюсером событий. Потому что продюсер начинал ходить клиентом в real-world-urls.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
V
А мне нужно было наоборот - стартовать с запущенным http, но с выключенным продюсером событий. Потому что продюсер начинал ходить клиентом в real-world-urls.
И здесь было бы логично: MY_APP_PRODUCE=false iex -S mix или там MY_APP_PRODUCER=mock или что-то в таком случае на мой субъективный взгляд. Хотя этот кейс через конфигурацию в dev.exs и prod.exs решается, если вовремя разработки не предполагается ходить в real-world-urls вообще.
источник

VI

Victor Ivanov in pro.elixir
Alex Bubnov
никто не знает, кто вообще эту мету ставит?
чисто как пример:

config :logger, :logger_papertrail_backend,
 url: "${PAPERTRAIL_URL}",
 ...
 metadata_filter: [papertrail: true]


d
ef handle_in("log", payload, socket) do
...
Logger.infoLogger.info(payload, papertrail: true, module: module)

 {:noreply, socket}
end
источник

AB

Alex Bubnov in pro.elixir
Victor Ivanov
чисто как пример:

config :logger, :logger_papertrail_backend,
 url: "${PAPERTRAIL_URL}",
 ...
 metadata_filter: [papertrail: true]


d
ef handle_in("log", payload, socket) do
...
Logger.infoLogger.info(payload, papertrail: true, module: module)

 {:noreply, socket}
end
Не, меня конкретно time и gl интересовали, и мы уже нашли. Я чуть позже напишу, наверное, довольно прохладная история вышла
источник

VI

Victor Ivanov in pro.elixir
а, ок
источник

LL

Lama Lover in pro.elixir
Dmitry Russ (Aleksandrov)
Или теперь, если у нас не phonix, а какое-нибудь телекоммуникационное приложение - нужно ввести комманду: mix telecommunication.server и для каждого типа приложение создавать свою специфичную комманду старта?

А если зайти дальше, то как стартовать phoenix + telecommunication (diameter listener) приложение? phx.server по этой логике phoenix-а уже не корректно.

Мне явно симпатизирует вариант иметь универсальную комманду старта приложения, нежели создание под каждый тип приложения свою, либо иметь конфигурационный environment (`MY_APP_HTTP_SERVER=false`) как я привёл пример. Не для phoenix или Rails разработчика - такой путь будет понятнее - на мой субьктивный взгляд.
Так давайте спросим на эликсир-форуме
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Źmićer Rubinštejn
Может быть даже плохо, но удобно )
Я не хочу оценивать в плане того, насколько хорошо или плохо - всё это субьективно. И не хочу убеждать по поводу удобства - это тоже субьективно. Я верю, что есть люди, кому так точно удобно. Но я поразмышляю ещё немного, чтобы проверить - насколько это логично.

По поводу удобства - на самом деле тоже - это тоже очень спорный вопрос - у меня не возникает необходимости стартовать приложение без http listener-а. Может причина, что я не пришёл из Ruby on Rails, но я настолько привык стартовать всё приложение целиком и полностью, что считаю это очень удобным…. (П.с. в телекоммуникациях без феникса - мы так и делали - с листенерами).

Со стороны - это выглядит действительно как что-то, пришедшее из Ruby on Rails, т.е. иметь возможность стартовать какое-то странное полу-приложение, которое умеет ходить в базу, но не умеет отдавать http запросы.

Единственный кейс - приведённый здесь - это чтобы смотреть в базу без подключения в докер (хотя запустить remote_console в докере - это одна комманда).
Для меня - необходимость ходить из кода приложения в базу объясняется необходимостью заглянуть в состояние приложения, но и здесь ходить только в базу по всем параметрам уступает удалённой консоли. Ходить только в базу - это очень ограниченный доступ к состоянию, когда из удалённой консоли - можно прочитать и что находиться в ets и многие другие in-memory состояния. Т.е. remsh решает эту задачу намного более полноценно и тогда вариант только доступ в базу - выглядит снова каким-то очень не полноценным.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Как будто он появился до появления remsh-а, но remsh существовал ещё до того, как Elixir появился, что тоже парадокс. Я так и не могу найти кейса, где такой вариант repo-only (или точнее всё without http) - нужен в принципе в данной экосистеме, может быть я что-то сильно упускаю.
источник

V

V in pro.elixir
>  какое-то странное полу-приложение, которое умеет ходить в базу, но не умеет отдавать http запросы

так это ж норм, потому что http - лишь один из UI
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Dmitry Russ (Aleksandrov)
Я не хочу оценивать в плане того, насколько хорошо или плохо - всё это субьективно. И не хочу убеждать по поводу удобства - это тоже субьективно. Я верю, что есть люди, кому так точно удобно. Но я поразмышляю ещё немного, чтобы проверить - насколько это логично.

По поводу удобства - на самом деле тоже - это тоже очень спорный вопрос - у меня не возникает необходимости стартовать приложение без http listener-а. Может причина, что я не пришёл из Ruby on Rails, но я настолько привык стартовать всё приложение целиком и полностью, что считаю это очень удобным…. (П.с. в телекоммуникациях без феникса - мы так и делали - с листенерами).

Со стороны - это выглядит действительно как что-то, пришедшее из Ruby on Rails, т.е. иметь возможность стартовать какое-то странное полу-приложение, которое умеет ходить в базу, но не умеет отдавать http запросы.

Единственный кейс - приведённый здесь - это чтобы смотреть в базу без подключения в докер (хотя запустить remote_console в докере - это одна комманда).
Для меня - необходимость ходить из кода приложения в базу объясняется необходимостью заглянуть в состояние приложения, но и здесь ходить только в базу по всем параметрам уступает удалённой консоли. Ходить только в базу - это очень ограниченный доступ к состоянию, когда из удалённой консоли - можно прочитать и что находиться в ets и многие другие in-memory состояния. Т.е. remsh решает эту задачу намного более полноценно и тогда вариант только доступ в базу - выглядит снова каким-то очень не полноценным.
источник
2020 May 16

AB

Alex Bubnov in pro.elixir
а можно конкретнее, на что из них смотреть?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Execute the app as one or more stateless processes и Treat backing services as attached resources

По херокерски любой стейт это ересь, а в базу можно ходить прозрачно из любого места одинаково
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Это сделано чтобы каличные языки без ремш норм работали
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
Execute the app as one or more stateless processes и Treat backing services as attached resources

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

ŹR

Źmićer Rubinštejn in pro.elixir
Alex Bubnov
про стейтлесс процессы я посмеивался, когда читал, да. по-моему у меня на каждой работе с эрлангом какой-то кусок системы, зачастую центральный, был абсолютно неизбежно стейтфул.
Ну это парадокс феникса. Вроде как ты должен быть весь такой 12фактор, а с другой стороны - нахера тогда вообще нужен beam
источник

AB

Alex Bubnov in pro.elixir
beam нужен чтобы не волноваться, что у тебя воркеры кончатся.
источник

AB

Alex Bubnov in pro.elixir
к этому, кстати, очень болезненно привыкаешь, потом без гринтредов начинает очень сильно корежить
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Źmićer Rubinštejn
Execute the app as one or more stateless processes и Treat backing services as attached resources

По херокерски любой стейт это ересь, а в базу можно ходить прозрачно из любого места одинаково
В beam как раз часто приходят, когда этого становится не достаточно и становится понятно, что стейт нужен 😹
источник