Size: a a a

2020 September 24

С

Саша in ErlangRus
arikai
Звучит как эликсировский Plug
plug — это то что в других стеках middleware зовется?
источник

a

arikai in ErlangRus
Ближайшая аналогия, да
источник

С

Саша in ErlangRus
а какие отличительные особенности от других реализаций?
источник

С

Саша in ErlangRus
я просто начал погружаться в эту тему, и нигде не встретил, чтобы в нескольких предложениях внятно описали эту концепцию. Везде общие слова и связь с рубями
источник

AB

Alex Bubnov in ErlangRus
Саша
а какие отличительные особенности от других реализаций?
в-основном, стиль написания.
во многих фреймворках используется явная передача в middleware ручки next, спускающей запрос дальше по пайплайну и отдающей респонс для обработки мидлварью. в плаге для  этого используется регистрация процессоров результата через Conn.register_before_send.  
типичный для экс-рубистов абьюз макросов(см. Plug.Builder и Plug.Router), и как следствие непонятки между компайл- и рантайм инициализацией плагов.
источник

AB

Alex Bubnov in ErlangRus
концептуально - мидлварь как мидлварь.
источник

LL

Lama Lover in ErlangRus
Alex Bubnov
в-основном, стиль написания.
во многих фреймворках используется явная передача в middleware ручки next, спускающей запрос дальше по пайплайну и отдающей респонс для обработки мидлварью. в плаге для  этого используется регистрация процессоров результата через Conn.register_before_send.  
типичный для экс-рубистов абьюз макросов(см. Plug.Builder и Plug.Router), и как следствие непонятки между компайл- и рантайм инициализацией плагов.
Макросы и инициализация ни при чём
Инициализация плагов в компайле — намеренное решение никак не связанное с макросами
источник

AB

Alex Bubnov in ErlangRus
ладно, тогда я не понимаю, как можно принять намеренное решение, которое не позволяло конфигурить папку, из которой сервится статика.
источник

С

Саша in ErlangRus
Alex Bubnov
в-основном, стиль написания.
во многих фреймворках используется явная передача в middleware ручки next, спускающей запрос дальше по пайплайну и отдающей респонс для обработки мидлварью. в плаге для  этого используется регистрация процессоров результата через Conn.register_before_send.  
типичный для экс-рубистов абьюз макросов(см. Plug.Builder и Plug.Router), и как следствие непонятки между компайл- и рантайм инициализацией плагов.
а вся эта схема предусматривает такой же пайплайн обработки ответа?
источник

a

arikai in ErlangRus
Alex Bubnov
ладно, тогда я не понимаю, как можно принять намеренное решение, которое не позволяло конфигурить папку, из которой сервится статика.
Неужели для этого ишью нет?
источник

С

Саша in ErlangRus
ну кейс например, добавить в уже сформированный ответ заголовок с временем обработки запроса
источник

AB

Alex Bubnov in ErlangRus
Саша
ну кейс например, добавить в уже сформированный ответ заголовок с временем обработки запроса
да, это в before_send хэндлерах делается
источник

AB

Alex Bubnov in ErlangRus
типа, если тебе такая механика нужна - регистрируешь его, если нет - просто запрос препроцессишь
источник

AB

Alex Bubnov in ErlangRus
arikai
Неужели для этого ишью нет?
я уже не помню даже, было оно или нет
источник

AB

Alex Bubnov in ErlangRus
скорей всего, если было, был ответ - Plug.Static не для того, wontfix
источник

a

arikai in ErlangRus
Плаг - это система композируемых функций над коннектом. Хочешь изменить что-то в реквесте перед дальнейшей обработкой? Хочешь отправить ответ? Хочешь добавить что-то в ответ в дополнение к основному? Он все это позволяет делать.
источник

a

arikai in ErlangRus
Один из простых юзкейсов - логгирование запроса и времени его обработки
источник

С

Саша in ErlangRus
@nwalker @ar1ka1 спасибо, стало понятнее
источник

a

arikai in ErlangRus
Plug.Static - отдача статики по пути /URL из директории /dir
источник

a

arikai in ErlangRus
Plug.Session - добавление сессионной информации к пришедшему коннекту (реквесту)
источник