
Anton
03.09.2017
21:10:59

Alex
03.09.2017
21:11:06
Но это не совсем про AR/Rom, это больше о недостатках отрыва от физической модели.

Anton
03.09.2017
21:11:40

Nikita
03.09.2017
21:11:44
в роме адаптеры потому и существуют, что абстракции текут

Google

Alex
03.09.2017
21:11:57
например то что он вместо базы в редис лезет.
и тогда не будет мысли искать в базе поле post_count для topic'а, потому что из модели явно видно что она из редиса берется.
что за адаптеры?

Nikita
03.09.2017
21:13:55
каждый адаптер идет со своими представлениями о том, как ему работать с хранилищем

Aleksandr
03.09.2017
21:14:36

Alex
03.09.2017
21:14:47

Nikita
03.09.2017
21:15:23

Alex
03.09.2017
21:15:30
я просто с rom вообще не работал, я только общее представление о нем наверное имею.

Nikita
03.09.2017
21:15:31
но это будет в явном виде

Alex
03.09.2017
21:15:43
ну это по сути что то типа гемов pg и прочего?

Google

Alex
03.09.2017
21:15:53
поверх которых AR работает.

Nikita
03.09.2017
21:17:22
близко, но не то. Под адаптером да, есть конкретный адаптер к БД, но смысл ром-адаптера, чтобы предоставить идиоматичный интерфейс доступа к данным
http://rom-rb.org/3.0/learn/sql/queries/ вот как это в случае выглядит в случае реляционных баз
нужно понимать, что это относится лишь к взаимодействию с базой, в приложении этот слой скрыт обычно за репозиторием
репозиторий будет тем интерфейсом, с которым общается приложение. В нем будет явно написано куда сходить и че достать
class TaskRepo < ROM::Repository[:tasks]
def by_id_with_user(id)
tasks.by_pk(id).wrap_parent(user: task_repo.users).one
end
end
вот какой-то примерчик

Alex
03.09.2017
21:20:32
без понимания абстракции этот кусок как то совсем не читается.

Nikita
03.09.2017
21:21:28
тут нет абстракции, вот в чем дело, это сиквел-запрос, разложенный на составляющие

Alex
03.09.2017
21:21:36
сиквел запрос есть абстракция

Nikita
03.09.2017
21:21:47
над чем же?

Alex
03.09.2017
21:21:50
это не голый SQL например. Который впрочем тоже абстракция но низкоуровая.

Nikita
03.09.2017
21:22:24
ты попутал, у тебя у реляционной базы нет другого интерфейса

Alex
03.09.2017
21:22:40
не всегда.

Nikita
03.09.2017
21:22:42
нет такого варианта сходить и прочитать данные с диска

Alex
03.09.2017
21:22:50
У mysql можно сбоку прикрутить какой то nosql доступ

Nikita
03.09.2017
21:23:06
не понимаю что мы обсуждаем

Alex
03.09.2017
21:23:31

Anton
03.09.2017
21:24:00

Alex
03.09.2017
21:24:00
wrap_parent непонятен пока

Google

Nikita
03.09.2017
21:24:26
это может быть просто неудачный нейминг, не зацикливайся

Anton
03.09.2017
21:24:51

Alex
03.09.2017
21:25:33

Nikita
03.09.2017
21:25:43
главная идея — у тебя есть вполне предсказуемая логика при построении запросов, поэтому ты можешь выражать всякое разное, просто короче, чем через сам сиквел, который трехбуквенный

Alex
03.09.2017
21:26:36
там цепочки релейшенов как в AR есть?

Nikita
03.09.2017
21:27:14

Alex
03.09.2017
21:27:49
все остальные куски довольно очевидны, а вот wrap_parent сходу не был ясен.

Nikita
03.09.2017
21:28:01
да, есть

Anton
03.09.2017
21:28:07

Alex
03.09.2017
21:28:38
ну я там просто вижу tasks а не self, полагаю что суть таже. Оно продолжает текущую цепочку

Anton
03.09.2017
21:29:03

Alex
03.09.2017
21:29:05
контрольный вопрос, если rom очевидно лучше AR подхода
почему его так мало юзают?

Anton
03.09.2017
21:30:07
Мало кто знает, комьюнити маленькое, сложность входа. Все как и у всех

Nikita
03.09.2017
21:30:09

Alex
03.09.2017
21:30:42
снизу вверх т.е сначала адаптеры а потом поверх них репозиторий?
чтобы все кейсы отловить?

Nikita
03.09.2017
21:30:59
все сложно)

Google

Nikita
03.09.2017
21:32:21
это правда сложная библиотека, снизу вверх это значит, что прежде чем строить высокоуровневые абстракции нужно сначала разобраться с низкоуровневыми, попробовать разные подходы, отобрать что хорошо рабоатет, отрефакторить, продолжать развивать

Alex
03.09.2017
21:32:57
я что то такое и подразумевал, отловить все кейсы чтобы построить хорошую абстракцию высшего порядка
самый геморой это когда ты стабилен, пишешь новый низкоуровневый адаптер, и там чего то из высшего порядка не хватает )
спасибо за разговор, стало явно больше желания глянуть на то что представляет из себя rom и ханами.

Nikita
03.09.2017
21:34:54
геморрой это даже не то слово

Michael
04.09.2017
07:18:39
Добрый день, подскажите пожалуйста кто каким гемом пользуется для работы с http://ocrsdk.com/

Admin
ERROR: S client not available

Artem
04.09.2017
07:58:35
Народ, кто-нибудь знает, есть в Ruby (или Rails) структура типа хэша, которая ключи по === сравнивает? Частенько пишу такое:
case some_var
when 1 then 'asd'
when 2..5 then 'qwe'
end
А хотелось бы так:
convert_map = { 1 => 'asd', (2..5) => 'qwe' }
convert_map.fetch(some_var)

Dmitriy
04.09.2017
08:22:08
Всем добрый день!

Каверин
04.09.2017
08:22:21

Dmitriy
04.09.2017
08:22:31
Подскажите, кто как бэкапит приложение рельсовое? Используете гем backup?
или есть другие более хорошие средства

Alexander
04.09.2017
08:35:44

Dmitriy
04.09.2017
08:35:55
и того и того)

Fedor
04.09.2017
08:36:14
код отлично бэкапится при помощи git push

Alexander
04.09.2017
08:36:27
ког в гитхабе. или капистрано хранит несколько предыдущих релизов
в бд, средаствами бд ну или каким нибудь скриптом. тут ваш сисдамин может подсказать. обычно бекапы базы на нем висят

Yaroslav
04.09.2017
08:37:36

Dmitriy
04.09.2017
08:39:56
а гемом backup никто не пользовался?

Google

Timur
04.09.2017
08:40:09
В DO есть опция бэкапа за 20%. Как работает и что именно делает - хз

Dmitriy
04.09.2017
09:03:23
не, это свой сервер

Alan
04.09.2017
09:22:03
Я тут с dry-validation играюсь. Есть ли примеры проектов на rails где этот гем используется?

v
04.09.2017
09:22:54
есть, инфа соточка

Anton
04.09.2017
09:22:57
есть посты, 100%, код не смотрел особо, но думаю найти можно

v
04.09.2017
09:23:16
тут по-моему каждый третий уже с dry-* игрался

Anton
04.09.2017
09:23:51

v
04.09.2017
09:24:21
лучше бы хаскеле писали

Alan
04.09.2017
09:24:58

Nikita
04.09.2017
09:29:01

Alexander
04.09.2017
09:31:42

Nikita
04.09.2017
09:32:36
и это круто!
я вчера поискал, даже в вакансиях теперь встречается Ж)

Alexander
04.09.2017
09:32:38
так же валидации вообще лучше бы убрать из моделей. а вынести в сервисы/интеракторы/экшены, смотря кто как называет

Anton
04.09.2017
09:33:07

Nikita
04.09.2017
09:33:15
rly

Alexander
04.09.2017
09:33:19
хочу добраться до драй транзакций. но все не могу