Size: a a a

Saint P Ruby Community

2021 March 03

AS

Alexander Susikov in Saint P Ruby Community
vveare138
иначе тогда зачем этот репозиторий нужен, если можно сделать User.active.allowed_to_sign.page(5).per_page(10).all :)
А разве это плохо иметь такой api доступа к данным?
источник

AS

Alexander Susikov in Saint P Ruby Community
Сразу поправка - я сейчас про апи построения запросов, а не про ar. Ar ужасен как паттерн доступа к данным. Как и говорил выше - все это имхо🙂
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Alexander Susikov
Сразу поправка - я сейчас про апи построения запросов, а не про ar. Ar ужасен как паттерн доступа к данным. Как и говорил выше - все это имхо🙂
А можно обоснуй про ужасность?
источник

v

vveare138 in Saint P Ruby Community
Alexander Susikov
А разве это плохо иметь такой api доступа к данным?
плохо, потому что:
a) это расползается везде по коду
б) плохо тестируется (никак)
источник

AD

Anton Davydov in Saint P Ruby Community
vveare138
плохо, потому что:
a) это расползается везде по коду
б) плохо тестируется (никак)
+
источник

NB

Nikita Bulai in Saint P Ruby Community
Aleksandr Pilishenko
А можно обоснуй про ужасность?
Думаю речь про возможности запросов (которые упираются максимум в arel). И сравнение с каким более гибким Sequel
источник

AD

Anton Davydov in Saint P Ruby Community
Причём второй пункт важнее ибо связанность слоев повышается сильно и потом не разделить
источник

AD

Anton Davydov in Saint P Ruby Community
Anton Davydov
Причём второй пункт важнее ибо связанность слоев повышается сильно и потом не разделить
И вот в этом разделении обычно самая большая проблема, особенно в сепарации сервисов
источник

AS

Alexander Susikov in Saint P Ruby Community
Aleksandr Pilishenko
А можно обоснуй про ужасность?
Ну один класс отвечает:
- за структуру модели
- персистенс модели
- чтение модели из источника данных
Это в каноничном описании. В рубишной реализации еще валидацию накрутили.
Если коротко - наружение srp
источник

AD

Anton Davydov in Saint P Ruby Community
Alexander Susikov
Ну один класс отвечает:
- за структуру модели
- персистенс модели
- чтение модели из источника данных
Это в каноничном описании. В рубишной реализации еще валидацию накрутили.
Если коротко - наружение srp
Ещё и за валидации и бизнес логику (это в ар рельсы)
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Nikita Bulai
Думаю речь про возможности запросов (которые упираются максимум в arel). И сравнение с каким более гибким Sequel
Большинство кейсов ar вроде покрывает, если нужны оконные функции или ещё какая экзотика - всегда же можно голый скл добааить. Arel вообще скорее для написания плагинов к ar открыт в паблик, на мой взгляд он куда хуже чем скл читается
источник

m

max in Saint P Ruby Community
vveare138
плохо, потому что:
a) это расползается везде по коду
б) плохо тестируется (никак)
а что ты там тестировать собрался?
я уверен Arel и AR протестированы хорошо
иначе это получаются фиктивые тесты проверяющие что код 2+2 действительно возвращает 4 и вызывает операцию + - конфигурацию тестируешь
источник

AD

Anton Davydov in Saint P Ruby Community
max
а что ты там тестировать собрался?
я уверен Arel и AR протестированы хорошо
иначе это получаются фиктивые тесты проверяющие что код 2+2 действительно возвращает 4 и вызывает операцию + - конфигурацию тестируешь
Чейн вызовов. Его почти не реально юнит тестом покрыть
источник

NB

Nikita Bulai in Saint P Ruby Community
Aleksandr Pilishenko
Большинство кейсов ar вроде покрывает, если нужны оконные функции или ещё какая экзотика - всегда же можно голый скл добааить. Arel вообще скорее для написания плагинов к ar открыт в паблик, на мой взгляд он куда хуже чем скл читается
С голым скл лишаешься возможности портировать запросы в иную субд, например
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Anton Davydov
Ещё и за валидации и бизнес логику (это в ар рельсы)
Это если ты захочешь, то будет отвечать за валидацию и бизнес логику. Никто не принуждает. Маппинг данных и апи запросов в одном классе - не нарушение srp
источник

AD

Anton Davydov in Saint P Ruby Community
От этого у тебя тесты часами идут, хотя в 80% случаев тебе в базу ходить и не нужно, что бы логику бизнес логики проверить
источник

AS

Alexander Susikov in Saint P Ruby Community
vveare138
плохо, потому что:
a) это расползается везде по коду
б) плохо тестируется (никак)
1. Не понял почему он расползается? Если ты используешь только скоупы(мы же в контексте ar говорим), а не where, то расползания не будет - ты пользуешься апи у модели, которые описаны через скоупы
2. Опять таки если использовать толлько скоупы - в примере что мы обсуждаем они только и есть, то проблем с тестами нет - ты можешь вместо ar-модели подсунуть мок и застабить все методы-скоупы
источник

AD

Anton Davydov in Saint P Ruby Community
Aleksandr Pilishenko
Это если ты захочешь, то будет отвечать за валидацию и бизнес логику. Никто не принуждает. Маппинг данных и апи запросов в одном классе - не нарушение srp
Скорее я о каноничном рейлс вее говорю
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Nikita Bulai
С голым скл лишаешься возможности портировать запросы в иную субд, например
Часто портируешь? Кавычки заменить надо будет, или используешь непереностмые киллер фичи своей базы?)
источник

AD

Anton Davydov in Saint P Ruby Community
Alexander Susikov
1. Не понял почему он расползается? Если ты используешь только скоупы(мы же в контексте ar говорим), а не where, то расползания не будет - ты пользуешься апи у модели, которые описаны через скоупы
2. Опять таки если использовать толлько скоупы - в примере что мы обсуждаем они только и есть, то проблем с тестами нет - ты можешь вместо ar-модели подсунуть мок и застабить все методы-скоупы
2. Можешь, а можешь прямо класс методы писать. Будет похоже на ту идею, которую репозиторий продвигает
источник