@rubylang

Страница 1167 из 1684
Ivan
12.08.2017
09:35:33
Да, конечно, о полном даунтайме речи не идет — это был бы вообще криминал. Я просто к тому, что надо рестартовать контейнер каждый раз. Я не могу делать это автоматически в пулле compose так как nginx — это, считай, самостоятельный проект на хосте, который обслуживает несколько проектов.

Adamtsov
12.08.2017
09:38:18
ассетики тоже не при каждом деплои меняются)

Kalbaskin
12.08.2017
12:51:02
Мужики, кто какие базы городов использует?

привет!)

Google
Темур
12.08.2017
13:11:31
фиас

Kalbaskin
12.08.2017
13:40:36
Раньше был citieslist.ru с базой из вк. щас он уже лежит

v
12.08.2017
13:42:55
dadata выручает

Vasiliy
12.08.2017
13:44:19
С дадатой работали - вообще отлично(если у себя базу хранить не надо)

До этого облачный кладр или фиас юзали - гавно, надо отдельно все вбивать, тут одним полем, в коллцентре прям вообще огонь

Kalbaskin
12.08.2017
13:46:37
Мне по сути классификацию по всем населенным пунктам. Улицы и прочие вещи мне не нужны (безусловно dadata ништяк)

Vasiliy
12.08.2017
13:47:17
Там вроде у ВК в апи можно города запросить, не?

Rafkat
12.08.2017
13:47:29
как лучше тестировать внешний апи?

Kalbaskin
12.08.2017
13:47:56
Есть смысл искать что-то кроме dadata?

Вк в целом норм. Но мне базу себе надо

citieslist.ru как раз имел у себя базу спарсенную с вк.

В принципе есть идея брать полученные данные из dadata, и при первом вхождении сохранять себе)) ничего лишнего)

Nikita
12.08.2017
14:43:40
подскажите пожалуйста, как правильно сделать запрос через AR есть 2 модели, Mover и Job (has_many, belongs_to), нужно вывести всех Mover, у которых есть хотя бы 1 Job, с полем: status: true

Google
Vasiliy
12.08.2017
15:06:07
В вере передавай хэш

Вере(мовер: {жоб: тру})

Anton
12.08.2017
15:23:03
Fedor
12.08.2017
15:24:36
Mover.joins("inner join jobs")

Vasiliy
12.08.2017
15:43:07
В вере хеш когда с ключом связи кидаешь он автоматом жоины делает, фо ю виф лаф

Sergey
12.08.2017
21:01:13
Разве?

Mover.joins(:jobs).where(jobs: { status: true }).distinct Вообще, мне ещё нравится в последнее время использовать merge, что можно сделать так: Mover.joins(:jobs).merge(Job.active), где active - скоуп

Можно ещё where subquery сделать, если distinct не сработает

Максим
12.08.2017
21:45:07
ребзи чё про параллелизм почитать можо? ну руби

Anton
12.08.2017
21:54:41
Гугли книгу "working with ruby threads"

Максим
12.08.2017
21:55:43
загуглю, почитаю

а чего нибудь тпиа статьи какой

или документации

Vasiliy
12.08.2017
22:48:09
Конкурент руби

(наверное)

Максим
13.08.2017
00:46:22
нус пацаны

в понедельник у меня собес на джуна на руби

держите за меня кулаки

Смерть
13.08.2017
00:52:54
Окейси

Tony
13.08.2017
04:48:11
Ребята, привет! Подскажите как быть. Есть background job который переодически проверяет новость (тянет через rss) и если новость актуальная, мне надо отобразить ее. Чтобы постоянно не отображать, я проверяю ее (храню хэшсумму в redis) и сравниваю, но проблема в том, что не знаю где саму лучше новость хранить, чтобы отобразить. И вообще стоит ли хранить ее, подключать бд для этого. Новость очень маленьая (заголовок, анотация, дата). Вопрос в том, как мне лучше всего организовать отображение актуальной новости?

Google
Nikita
13.08.2017
07:01:49
В бд

И хеш сумму там же по сути можешь хранить вместо реддиса

Anton
13.08.2017
08:05:49
Всем привет) Кто-нибудь делал подключение react компонентов на rails 3?

Anton
13.08.2017
08:16:27
этого мы пока себе позволить не можем))

Alex
13.08.2017
09:10:22
Обновлял rails 3 до 5.1 и делал ?
Интересно. С 3 сразу на 5 или через 4?

Vitaliy
13.08.2017
09:13:11
Через, по гайдам. С текущей тройки ступенчато до последней тройки, потом до 4.0, 4.1, 4.2, 5.0, 5.1 http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html

Alex
13.08.2017
09:46:04
А проект большой? Сколько времени занял апргейд?

Karina
13.08.2017
09:55:47
чуваки, как сделать такое - у меня есть апи для покупки - update - api/purchase/:id и параметры - но чтоб сделать этот самый update нужно пройти опеределенную валидацию (из контроллера я вызываю service object, а там делаю include гема interactor). А еще есть такое апи update api/purchase/:id/attachments/ ( attachments относиться к purchase как belongs_to) и параметры. И чтоб сделать update attachment нужно ТОЖЕ провалидировать purchase!!!! Вот чё делать? гем interactor работает таким образом - там пишутся валидации и переопределяется метод call и в этом методе call объекту присваиваются новые значения. И вот у меня ситуация - у меня новый контроллер для update api/purchase/:id/attachments/ и, блин, ну как мне провалидировать purchase? можно унаследовать service object purchase для service object attachments - но по-моему это не совсем правильно. Есть какие-нибудь идеи?

Aleks
13.08.2017
10:37:13
у тебя отделный вызов api на изменение attachment, и при этом еще состояние purchase неизвестно или меняется?

Karina
13.08.2017
11:27:33
у тебя отделный вызов api на изменение attachment, и при этом еще состояние purchase неизвестно или меняется?
в том-то и дело, что отдельный - api/purchase/:id/attachments/ + параметры. purchase - при этом уже известен. в роутинге для attachments - api/purchase/:id/attachments/ нет никаких новых данных для purchase, тем не менее purchase всё равно надо провалидировать

Aleks
13.08.2017
11:35:28
в том-то и дело, что отдельный - api/purchase/:id/attachments/ + параметры. purchase - при этом уже известен. в роутинге для attachments - api/purchase/:id/attachments/ нет никаких новых данных для purchase, тем не менее purchase всё равно надо провалидировать
зачем его валидировать - там какие то валидации связанные с attachments - может тогда стоит подумать о том чтоб перенести их в attachments или вынести их?

Karina
13.08.2017
11:39:15
зачем его валидировать - там какие то валидации связанные с attachments - может тогда стоит подумать о том чтоб перенести их в attachments или вынести их?
валидировать purchase надо вот почему - потому что есть такие purchase, которые в определенный момент времени апдейтить НЕЛЬЗЯ и ваще с ними делать ничего НЕЛЬЗЯ (и attachments прикреплять к ним в том числе)

Karina
13.08.2017
11:48:39
ну конечно же

purchase же я получить могу по id

Aleks
13.08.2017
12:08:52
purchase же я получить могу по id
ну вот и ответ - узнать у purchase в каком он состоянии при валидации attachments. нет?

Karina
13.08.2017
12:19:37
ну вот и ответ - узнать у purchase в каком он состоянии при валидации attachments. нет?
а как? валидации на purchase находятся в сервис объекте, где инклюдится interactor (гем) - и у этого гема структура такая, что там должен вызываться ТОЛЬКО метод call, который и меняет состояние записи (а остальные методы - валидации и какие-то вспомогательные для метода call). Я ж не могу вызывать в Attachments сервис объект purchase - мне надо вызывать метод call и передавать туда новые данные для purchase - а какие новые данные для purchase, если я изменяю attachments и у меня просто нет новых данных для purchase

Karina
13.08.2017
12:21:14
ну да

Google
Karina
13.08.2017
12:21:32
я только валидации не могу вызвать

Aleks
13.08.2017
12:25:12
я только валидации не могу вызвать
зачем вызывать валидацию purchase если нужно знать только о состоянии purchase?

Karina
13.08.2017
12:25:54
так валидация только скажет можно этот объект изменять или нет

Aleks
13.08.2017
12:26:26
Karina
13.08.2017
12:27:14
можно. но мне код нельзя дублировать

короче. может можно как-то в этом interacore как-то вынести валидации... походу это единственный выход

ладно, спасибо за помощь

щас что-нибудь буду смотреть

Admin
ERROR: S client not available

Fedor
13.08.2017
12:31:12
Что мешает сделать return unless purchase.valid?

Вообще лучше в модели сделать понятный метод типа can_be_changed? И вызывать его и здесь и в валидации где это проверяется

Karina
13.08.2017
12:36:50
Вообще лучше в модели сделать понятный метод типа can_be_changed? И вызывать его и здесь и в валидации где это проверяется
такая архитектура, блин. в моделях ничего не пишется, кроме скоупов и связей. немного на trailblazer похоже

Fedor
13.08.2017
12:39:58
Ну тогда должен быть отдельный интерактор для валидации, и отдельный для всего остального

Иначе эту логику сделали на столько криво, что она нежизнеспособно

No
13.08.2017
12:40:23
такая архитектура, блин. в моделях ничего не пишется, кроме скоупов и связей. немного на trailblazer похоже
если метод не меняет состояние модели, то даже в траилблэйзере ок добавить такой метод в модель

Почему нет?

Fedor
13.08.2017
12:41:03
Сервис объекты для того и нужны что бы вызывать их для выполнения одного куска логики

Karina
13.08.2017
12:41:04
Почему нет?
фиг знает. короче, мне надо вкуривать interactor

Fedor
13.08.2017
12:41:14
А не нескольких сразу

Интерактор это просто куча методов с контекстом на входе и выходе

Google
Fedor
13.08.2017
12:41:41
Он простой как топор

No
13.08.2017
12:43:11
Я имею ввиду, что с точки зрения ООП ни капли не зазорно добавить метод в модель если этот метод говорит что-то о состоянии модели

Karina
13.08.2017
12:43:38
короче, надо понять можно ли сделать такое с interactor - вызывать у него только валидации

No
13.08.2017
12:43:54
А слепо следовать "метод в модели плохо" - это уже карго культ

Karina
13.08.2017
12:44:09
Fedor
13.08.2017
12:46:30
ага

это и есть вход )

это как бы черный ящик "сделай мне хорошо" )

ты кладешь туда контекст и получаешь результат на выходе, не думая о том, что внутри

ради этого он и нужен

что бы не думать о его реализации при использовании

и что бы логику дробить на такие вот унитарные черные ящики

и ипользовать их потом

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

вернее можно, если у тебя в интеракторе есть приватный метод validate то ты можешь сделать InteractorName.new(context).send(:validate)

потому что он попрежнему руби класс и у него можно дергать приватные методы с наружи

но это очень плохо и так никогда делать не надо

и если у тебя две логики валидация и еще что-то в одном интеракторе, то это значит что его надо распилить на два

один будет валидировать, а второй - выполнять логику приложения

и потом вот этот валидатор можно пихать в несколько мест где он нужен

Страница 1167 из 1684