
Anton
11.07.2017
13:27:04
ну и нормальная ОРМ
еще интеракторы из коробки, номальное тестирование экшенов, вью объекты, которые спасают и куча всего другого

Di
11.07.2017
13:27:33
ну и нормальная ОРМ
А есть где почитать про нормальность/ненормальность ОРМ для ненастоящих сварщиков?

Anton
11.07.2017
13:27:35

Google

Anton
11.07.2017
13:28:28
можно почитать доки ханами например
http://hanamirb.org/guides/models/overview/
вот от сюда

Di
11.07.2017
13:29:29
ничего не понял
Ну ты пишешь что у ханами нормальная орм. Видимо подразумевается что у рельсы не очень. Я кроме рельсовой ничего не видел, поэтому было бы интересно чем нормальная от ненормальной отличается.

v
11.07.2017
13:29:39

Anton
11.07.2017
13:29:48
да не
у меня скорее просто руки от фреймворка отвязались
будет видно что и как работает там
если коротко - мне не нравится ар из-за сложности написания запросов. очень часто скатываешься в арел или голый sql. с ромом пока таких проблем не было
но у рома есть пара минусов:
1. он не очевидный местами и по началу будет больно
2. когда боль уходит, становится больно с остальным

Google

Anton
11.07.2017
13:34:19

Fedor
11.07.2017
13:36:21
Мое ИМХО, что если ты начинающий проггер, который ищет работу, то под рельсу работу найти проще
ханами можно посмотреть из интереса, но если он тебе реально не сильно нужен и уже есть опыт с рельсой, то запилить проект на рельсе проще и быстрее
а вот если есть хорошая работа и там есть ханами, то не грех и выучить

Anton
11.07.2017
13:37:34
например там из коробки подумали о DI, что очень спасает порой

Fedor
11.07.2017
13:37:52
писать не говнокод на рельсе помогает код ревью )

Anton
11.07.2017
13:38:00
единственное, там дока отстала и ничего нет про интеракторы
говорю по собтсвенному опыту
на первой работе доебывались к каждому символу на ревью. это вообще никак не помогало писать хороший код
только удручало и заставляло печься
но это мой личный случай

Aleksey
11.07.2017
13:39:17
можно еще раз про интеракторы?
что это такое? чем-то отличается от сервисов/команд/операйшн/etc?

Anton
11.07.2017
13:39:38
Получил предложение писать о том, что использую в ежедневной работе, и добавить больше юзкейсов.
Давайте попробуем. В последнее время я часто использую паттерн interactor, поэтому расскажу о нем подробнее и покажу на реальном примере, как с помощью этого подхода зарефакторить экшен.
Я фанат идеи функциональных объектов. В Rails я использовал сервис-объекты, в текущем dry-web проекте — оперейшены, а в ханами — интеракторы.
Текст будет касаться исключительно Hanami и hanami-interactor, но подход возможно использовать в других фреймворках.
вот тут читай
там много и с примерами
вот ссылка даже
https://t.me/pepegramming/16

Aleksey
11.07.2017
13:40:31
спасибо

Anton
11.07.2017
13:40:36
хм, ссылки работают в разы лучше

Google

Anton
11.07.2017
13:40:48
спасибо
там же дальше про базовый DI будет

Inna
11.07.2017
13:41:20
Спасибо всем за ответы. Я хочу организовать команду фрилансеров. Фрилансеры, поделитесь, плиз, опытом, кто где ищет заказчиков?

Aleksey
11.07.2017
13:42:10
про DI вчера читал, честно говоря не сильно понял всю супер-крутость идеи
понятно про тестирование, но вот со слабым связыванием пока не понятно
видимо, еще не возникало больших сложностей

Serhii
11.07.2017
13:42:26
покажи реальный пример где справляется hanami orm и не справляется активрекорд? не защищаю рельсу, просто интересно

Anton
11.07.2017
13:43:10

Aleksey
11.07.2017
13:43:30
буду ждать :)

Anton
11.07.2017
13:43:38
т.е. пока описывалась сама идея, скоро напишу про dry-containers, а потом про dry-system, а вот там прямо заходит на ура

Fedor
11.07.2017
13:44:06
хорошие фрилансеры сидят на upwork и хотят зп в еврах

Anton
11.07.2017
13:44:21
есть просто несколько проектов, где используется ром (включая все рабочие), так что тут просто мое имхо связанное с опытом
ну как самый простой пример, ILIKE постгреса

Serhii
11.07.2017
13:44:45
ну не сравнения, просто сложный запрос который тяжко было бы в рельсе

Anton
11.07.2017
13:44:47
в АР из коробки нет этого
в роме есть
аналогично с нормальным чейном запросов
есть большой метод для разного поиска по полям
вот так выглядит
https://github.com/davydovanton/octostar/blob/master/lib/octostar/repositories/project_repository.rb
и то, я бы мб его переписал сейчас

Aleksey
11.07.2017
13:48:51
в 24 строке OR симпатичный

Google

Anton
11.07.2017
13:49:12
ага, not тоже норм выглядит

ojab
11.07.2017
13:49:57
в роме есть
http://www.rubydoc.info/gems/rom-sql https://github.com/rom-rb/rom/search?utf8=%E2%9C%93&q=ilike&type=
пичалька

Anton
11.07.2017
13:50:02
вот так выглядит
[3] pry(main)> repo.accounts.where { email.not('123@test.com') }
=> #<Persistence::Relations::Accounts name=accounts dataset=#<Sequel::Postgres::Dataset: "SELECT \"id\", \"status_id\", \"email\", \"created_at\", \"updated_at\", \"deleted_at\" FROM \"accounts\" WHERE (\"email\" != '123@test.com') ORDER BY \"accounts\".\"id\"">>

ojab
11.07.2017
13:51:44

Anton
11.07.2017
13:54:22
вот это уже не ко мне :D

ojab
11.07.2017
13:55:58
меня терзают смутные сомнения что там method_missing или подобное, так что об "изкоробке" говорить не совсем корректно

Admin
ERROR: S client not available

Anton
11.07.2017
13:56:13
ну а в целом, у меня, спустя 2 года, сложилось такое мнение обо всем этом:
если вы чувствуете какое-то давление со стороны рельсы или понимаете, что много времени тратите на то, что бы побороть фреймворк - попробуйте ханами или dry-web. скорее всего вы почувствуете себя свободнее
скорее всего на самом деле

ojab
11.07.2017
13:57:27
а по выразительности, судя по беглому взгляду, напоминает скорее Arel, а не AR
синтаксис поприятнее, да, но Arel при необходимости облагородить не особо сложно

Anton
11.07.2017
13:58:35

ojab
11.07.2017
13:58:38
ну и, прозреваю, arel помощнее будет
приходилось периодически

Anton
11.07.2017
13:58:51
ну и арел прямо не читаем в 90% случаев

0x58
11.07.2017
13:59:51
Парни, привет. Как можно добавить в relation элемент во время выполнения скоупа? если проверять возвращаемое кол-во, такое ощущение, что возвращается кэширование значение и relation не изменился, хотя внутри скоупа он меняется.

Google

Serhii
11.07.2017
13:59:53
для большей гибкости можно сырой SQL подучить тогда вообще все доступно будет

0x58
11.07.2017
14:00:00

Anton
11.07.2017
14:00:43
а, ну и главный плюс - маппинг данных быстрее

ojab
11.07.2017
14:00:46
А что ты пытаешься этим сделать? Relation не массив.

Anton
11.07.2017
14:00:49
так как в энтити нет ничего лишнего
ни валидации, ни каких-то колбэков

0x58
11.07.2017
14:01:43
В общем в relation домержить запись надо при опред. условиях

ojab
11.07.2017
14:02:50

Anton
11.07.2017
14:03:14

ojab
11.07.2017
14:03:15

Serhii
11.07.2017
14:05:14
ханами конечно интересно, но с точки зрения коммерческой - сильно мало спроса на него.всем нужна рельса. если же идти в ханами за скоростью - то это вообще ошибочно, т.к. руби и скорость в корне не совместимо. под производительность берутся другие языки

ojab
11.07.2017
14:06:15

Aleksey
11.07.2017
14:07:17

ojab
11.07.2017
14:07:47

0x58
11.07.2017
14:08:13
нужно чтобы скоуп возвращал всегда reletion оригинальный или измененный (если передан параметр).

ojab
11.07.2017
14:08:54
Тебе точно нужен Realtion, а не Array, например?

0x58
11.07.2017
14:09:09
просто есть места где его используют в связке с другими скоупами и все поломается если будет Array)

Serhii
11.07.2017
14:10:11
так никто и не говорит что сырой SQL писать всегда. только в особо тяжких случаях пару раз на всем проекте. Из-за этих пары случаев менять весь фреймворк - нонсенс. А если сырых SQLов сильно много в проекте, то это верный признак неправильности структуры базы

ojab
11.07.2017
14:10:44
Подсказка: его можно использовать с другими scope'ами, потому что это результат sql-запроса и к нему можно надобавлять ещё sql'a. Добавление произвольной записи это ломает.

Anton
11.07.2017
14:11:53