
Alex
13.10.2016
16:04:43
рэббэ на рельсах

Mikhail
13.10.2016
16:05:49
Сара одобряет

ojab
13.10.2016
16:09:00
https://gist.github.com/ojab/42364d67eaf2cc0f371b5c697b8f503d
хз как это оптимизируется в процессе, правда

Google

ojab
13.10.2016
16:09:35
но тем не менее при (&:) не дёргается блок, а метод напрямую вызывается

Igor
13.10.2016
16:10:30
об этом я и говорил выше
поэтому он и должен быть быстре
нет промежуточного блока

Konstantin
13.10.2016
16:10:59
я тут решил посмотреть как сделать так, чтобы в activerecord аттрибут кастился не в дефолтный, а в мой тип
простой ответ никак

Igor
13.10.2016
16:11:27
serialize :D
азазаза

Konstantin
13.10.2016
16:11:38
http://blog.arkency.com/2016/03/custom-typecasting-with-activerecord-virtus-and-dry-types/
да не
вот я взял, сделал свой тип, унаследовался от ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Json.
прикол в чем? в том, что там внутри ActiveSupport::JSON.decode
который внутри дергает JSON.parse

Google

Konstantin
13.10.2016
16:12:56
так вот в AS::JSON нельзя прокинуть параметр в JSON.parse

Alex
13.10.2016
16:13:02

Konstantin
13.10.2016
16:13:10
а если ты будешь парсить напрямую, то не будут правильно конвертиться даты
https://github.com/rails/rails/blob/fb6bbe7e90e6eab18db56476bb9358b2ee88d677/activesupport/lib/active_support/json/decoding.rb#L24

Alex
13.10.2016
16:13:21
обычный геттер сеттер не помогут?

Igor
13.10.2016
16:13:22
ясно

Konstantin
13.10.2016
16:13:24
потому что приватный API

Igor
13.10.2016
16:13:24
понятно
ну маппинг типов
у тебя в постгрес адаптере же

Антон
13.10.2016
16:13:48

Konstantin
13.10.2016
16:14:03

Alex
13.10.2016
16:14:08

Artur
13.10.2016
16:14:38

Igor
13.10.2016
16:14:38
рабишахта ничем не лучше чем хорошо обмазанный плагинами атом или сабл

Alex
13.10.2016
16:14:46

Igor
13.10.2016
16:14:59

Alex
13.10.2016
16:15:01
иначе потом можно наткнуться на тормоза при попытке пройтись по параметру у моделек так 300

Google

Igor
13.10.2016
16:15:32
ну это по факту костыль сам по себе

Konstantin
13.10.2016
16:15:34
@Fedcomp суть в том, что так будет создаваться Hash, потмоу ты его будешь конвертить в твой объект. лишняя работа

Igor
13.10.2016
16:15:43
поэтому и костыльно

Konstantin
13.10.2016
16:15:44
я хочу сразу парсить в мой объект

Mikhail
13.10.2016
16:15:56
холивардей сегодня да

Igor
13.10.2016
16:16:07
это да

Alex
13.10.2016
16:16:12
у тебя критичное к производительности место?

Konstantin
13.10.2016
16:16:44
с таким подходом и получается "руби тормозит"

Igor
13.10.2016
16:16:45
зачем терять производительность на костылях?

Alex
13.10.2016
16:17:05
чего сразу на ассемблер не переключиться не понимаю.

Igor
13.10.2016
16:17:42
чего сразу на счеты не переключится не понимаю

Alex
13.10.2016
16:17:47
геттер и опционально, сеттер в модельке это вообще не костыль.

Alex
13.10.2016
16:18:00
Производительность программиста > производительность кода, в большинстве случаев.

Igor
13.10.2016
16:18:00
это самый натуральный костыль
нет

ojab
13.10.2016
16:18:11

Alex
13.10.2016
16:18:12
зачем он нужен если базу можно сразу запрашивать
сразу производительность повышается.

Igor
13.10.2016
16:18:37
wut?

Google

Alex
13.10.2016
16:18:44

Igor
13.10.2016
16:19:02
какие-то левые аргументы идут в бой
писать геттер сеттер

Alex
13.10.2016
16:19:11
зачем терять производительность на костылях?

Igor
13.10.2016
16:19:13
и два раза парсить json
это у тебя не костыль

Alex
13.10.2016
16:19:31
форкнуть/замонкейпатчить рельсы VS просто сделать геттер и сеттер

Admin
ERROR: S client not available

Igor
13.10.2016
16:19:34
ну лан

Alex
13.10.2016
16:19:37
что проще поддерживать? что будет работать стабильнее?

Igor
13.10.2016
16:19:47
при публичном API
первый вариант во всем лучше

Alex
13.10.2016
16:20:02
у тебя есть публичное апи?

Igor
13.10.2016
16:20:07
мне неведомо

Alex
13.10.2016
16:20:20
судя по всему нет, иначе бы спора не было.
А раз нет то почему ты игнорируешь мое сообщения я хз
форкнуть/замонкейпатчить рельсы VS просто сделать геттер и сеттер
что проще поддерживать? что будет работать стабильнее?
Пощади программеров который будут потом твой код поддерживать.

Konstantin
13.10.2016
16:21:09
а где речь шла про форкнуть и манкипатчить?

Google

Alex
13.10.2016
16:21:29
а как ты сделаешь чтобы не было двойного парсинга?

Konstantin
13.10.2016
16:22:05
http://blog.arkency.com/2016/03/custom-typecasting-with-activerecord-virtus-and-dry-types/
делаешь свой тип
в нем парсишь как хочешь

Alex
13.10.2016
16:22:20
о, круть.

ojab
13.10.2016
16:22:22

Igor
13.10.2016
16:22:25
https://github.com/rails/rails/blob/2db8514d218068cae7b37b7939ed3ba812407105/activerecord/lib/active_record/type/internal/abstract_json.rb

Konstantin
13.10.2016
16:22:55
у JSON.parse есть аргумент object_class

ojab
13.10.2016
16:23:03
а, по ссылке оно и есть

Konstantin
13.10.2016
16:23:57
да

Igor
13.10.2016
16:24:25
а attribute не работаент?

Konstantin
13.10.2016
16:24:26
https://github.com/rails/rails/blob/fb6bbe7e90e6eab18db56476bb9358b2ee88d677/activesupport/lib/active_support/json/decoding.rb#L20
проблема вот тут
decode не принимает opts

Igor
13.10.2016
16:24:35
class StoreListing < ActiveRecord::Base
attribute :my_string, :string, default: "new default"
end

Konstantin
13.10.2016
16:24:40
и не прокидывает в JSON.parse
а если заюзать JSON.parse напрямую, то надо будет самому конверить даты или дергать приватное АПИ https://github.com/rails/rails/blob/fb6bbe7e90e6eab18db56476bb9358b2ee88d677/activesupport/lib/active_support/json/decoding.rb#L24
иначе будет неконсистентно и сюрпризы
почему везде даты парсятся, а тут нет

Alex
13.10.2016
16:26:30
А в модуле точно приватное апи? я вроде натыкался что там private не работает