Size: a a a

2018 December 01

YS

Yuri S. in pro.elixir
могу я создать в проекте такой же файл и написать свои функции
источник

FM

Fey Martynov in pro.elixir
да
источник

FM

Fey Martynov in pro.elixir
ворнинг только будет при компиляции
источник

IK

Ihor Katkov in pro.elixir
Yuri S.
могу я создать в проекте такой же файл и написать свои функции
а зачем?
источник

YS

Yuri S. in pro.elixir
перезаписать определенные функции
источник

AM

Alexander Malaev in pro.elixir
Yuri S.
перезаписать определенные функции
Ужасная идея :)
источник
2018 December 02

NM

Nikita Mistyukov in pro.elixir
нормальная идея. переопределение модуля
источник

AM

Alexander Malaev in pro.elixir
Nikita Mistyukov
нормальная идея. переопределение модуля
Манки патчинг никогда нормальной идеей не был
источник

NM

Nikita Mistyukov in pro.elixir
да? а разве не на этом построен хот релоадинг, когда ты просто переопределяешь модуль, определенный ранее - и он работает по-новому.

конечно постоянно этим пользоваться не стоит, но иногда приходится.

привожу пример:
писал тут бота на агале, а Дима, хулиган, не реализовал там возможность отправлять кастомные клавиатуры, а мне надо было.

2 пути. Хороший и по твоему мнению манки-патчинг.

Хороший:
- форкнуть реп
- внести изменения нужные
- подключить в приложение зависимость не с хекса а со своего форка.

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

Учитывая что во времени я был ограничен - выбрал плохой вариант. Теперь ищу время когда можно законтрибутить изменения
источник

AM

Alexander Malaev in pro.elixir
Nikita Mistyukov
да? а разве не на этом построен хот релоадинг, когда ты просто переопределяешь модуль, определенный ранее - и он работает по-новому.

конечно постоянно этим пользоваться не стоит, но иногда приходится.

привожу пример:
писал тут бота на агале, а Дима, хулиган, не реализовал там возможность отправлять кастомные клавиатуры, а мне надо было.

2 пути. Хороший и по твоему мнению манки-патчинг.

Хороший:
- форкнуть реп
- внести изменения нужные
- подключить в приложение зависимость не с хекса а со своего форка.

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

Учитывая что во времени я был ограничен - выбрал плохой вариант. Теперь ищу время когда можно законтрибутить изменения
Не на этом. Ещё пример - автор библиотеки, например Дима, перепределяет модуль какой-нибудь либы из зависимостей, и у тебя тоже есть эта зависимость и ты такой потом импортируешь его агалу и не понимаешь почему всё работает не так как ожидается :))) Агала тут для примера... Бэдпрэктис из руби мира не стоит тянуть в эликсир, воняет
источник

NM

Nikita Mistyukov in pro.elixir
ну автору библиотеки за это надо руки оторвать))

давай другой пример.

есть в прооекте функция, которая генерирует страшно-сложный отчет. все это крутится в проде

тут начальству прям вот экстренно потребовался такой же отчет, но включить в него одну фигню. Решается буквально одним словом.

опять 2 пути
- внести изменения
- запушить это в продакшн (хорошо если хот релоадинг настроен - что не так и часто)
- дернуть отчет.

Ну и манкипатчинг
- залезть в иекс
- прям там бахнуть новую версию модуля
- получить отчет
- при необходимости вертать все в зад.


А на чем?)
источник

D

Dmitriy in pro.elixir
Расскажите пожалуйста, как человеку пока ещё далёкому от бэкенда, какой бест практис на ограничение на редактирование конкретной строчки в БД/модели? Простой пример: есть юзер, он создает посты, видит посты других, но редактировать может только свои.
источник

NM

Nikita Mistyukov in pro.elixir
в общем, спорить можно долго. Возможность переопределить модуль язык дает. Это чрезвычайно лютая и мощная фича. Как и любым лютым инструментом, этой фичей надо пользоваться отдавая себе отчет о последствиях.

Конечно, если ты весь проект строишь на переопрределениях чужих модулей - ну сам себе иванушка дурачок. А когда ты подумал, взвесил все за и против и решил - никто тебя не убедит что ты сделал неправильно.)
источник

D

Dmitriy in pro.elixir
Dmitriy
Расскажите пожалуйста, как человеку пока ещё далёкому от бэкенда, какой бест практис на ограничение на редактирование конкретной строчки в БД/модели? Простой пример: есть юзер, он создает посты, видит посты других, но редактировать может только свои.
UPD: интересует в контексте Phoenix/Ecto/Postgres
источник

D

Dmitriy in pro.elixir
Идеально было бы наверно как-то в changeset это прописать, но не придумал как это сделать
источник

NM

Nikita Mistyukov in pro.elixir
Dmitriy
Расскажите пожалуйста, как человеку пока ещё далёкому от бэкенда, какой бест практис на ограничение на редактирование конкретной строчки в БД/модели? Простой пример: есть юзер, он создает посты, видит посты других, но редактировать может только свои.
насколько мне известно. бестпрактикс нету) тебе надо где-то првоерять является ли юзер владельцем поста.

т.е связь поста с юзероом однозначно должна быть.

а вот где проверять - тема сложная.

мне вот кажется - что контроллер лучшее место. Ибо пост не должен знать кто его редактирует. А юзер может редактировать пост только через контроллер.

А вот мой шеф уверен - что надо прям на уровне бызы проверку устраивать, ну или как минимум в контексте.
источник

NM

Nikita Mistyukov in pro.elixir
ну что точно является плохой парктикой - проверть это исключительно на уровне вьюхи, т.е если юзер автор поста - ему кнопку редактирования показывать, если нет - не показывать. Это красиво - но где-то глубже проверку тоже надо устроить обязательно.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Надо было мне написать же, мы как-то отправляли кастомные клавиатуры
источник

AM

Alexander Malaev in pro.elixir
Nikita Mistyukov
ну автору библиотеки за это надо руки оторвать))

давай другой пример.

есть в прооекте функция, которая генерирует страшно-сложный отчет. все это крутится в проде

тут начальству прям вот экстренно потребовался такой же отчет, но включить в него одну фигню. Решается буквально одним словом.

опять 2 пути
- внести изменения
- запушить это в продакшн (хорошо если хот релоадинг настроен - что не так и часто)
- дернуть отчет.

Ну и манкипатчинг
- залезть в иекс
- прям там бахнуть новую версию модуля
- получить отчет
- при необходимости вертать все в зад.


А на чем?)
Не вижу в том, что ты написал никаких противоречий с тем, что манкипатчинг в коде - бэдпрэктис и не стоит его юзать. А в remote_console делай что хочешь, твое право и возможность, сам так делаю :)
источник

NM

Nikita Mistyukov in pro.elixir
Źmićer Rubinštejn
Надо было мне написать же, мы как-то отправляли кастомные клавиатуры
да там одну пару слов добавить. законтрибучу тебе на днях.
источник