@proRuby

Страница 796 из 1594
Nick
07.10.2017
21:37:19
allow_any_instance_of(Object).to receive(:foo).and_return(:return_value)

Если ты про то, что конкретно написать

Связка тут в принципе непричём.

Maxim
07.10.2017
21:55:21
У тебя колбэк же метод вызывает. Вот его и замокай
спасибо, нашёл уже, правда там немного не так =)

Google
Maxim
07.10.2017
21:55:59
в фактори-герлс есть спец. метод для такого рода моков. даже на их итхабе было написано. я неправильно гуглил =)

Vitaly
07.10.2017
21:56:38
расскажи подробнее, вдруг кому еще пригодится

или ссылочку дай

Ivan
08.10.2017
06:24:49
Колбеки - зло

Maksim
08.10.2017
06:26:41
не юзать after_create? :)
угу. Лучше сделать отдельный объект, который выполняет операцию и что-то ещё вызывает и тестировать его

у нас в биллинге сейчас все операции с услугами пользователей делаются через командный класс, в котором есть методы: change_license_limit, create_license, destroy_license. Там же происходит аудит лог, сохранение старых версий, провижнинг на разные сервисы

это удобно

Alex
08.10.2017
09:03:11
Это удобно если он используется в паре мест

Кроме того три разных публичных метода - ну такое

А вот если он используется много где - вот тогда жопа

Roman
08.10.2017
09:55:07
когда я сам себе был начальник :) я делал сервис-классы с единым интерфейсом: единственный публичный инстанс метод call, который проксируется в метод класса call

соответственно имена давал типа ChangeLicenseLimit, CreateLicense и т.д. или даже License::Create, License::ChangeLimit

Google
Alex
08.10.2017
09:57:21
Хороший подход, мне правда длина названия последнего класса не нравится.

Roman
08.10.2017
09:57:33
очень удобно: одно действие - один класс. мокать еще удобно тоже лямбдами

Alex
08.10.2017
09:58:05
License::ChangeLimit

Неймспейс просто чтобы у тебя 600 сервисов в одной папке не было

Roman
08.10.2017
09:58:29
так я ж так и написал вроде

Alex
08.10.2017
09:58:44
а, черт. Мой больной мозг решил что License::Create License::ChangeLimit это один класс

Roman
08.10.2017
09:59:03
а блин

я запятую пропустил

Alex
08.10.2017
09:59:35
просто часто читая разные вещи уже привык автоматически поправлять опечатки

бывает читаешь какой то кусок текста, следишь за логикой, если не стыкуется - меняешь слова/ставишь запятые, и читаешь снова.

Roman
08.10.2017
10:00:02
:)

Alex
08.10.2017
10:00:26
ну и тут оно сработало наоборот, решил что пробел - лишний

Roman
08.10.2017
10:01:52
проблемы обычно начинаются когда для create и delete половина приватных методов совпадают

начинаешь их выделять в еще один либо сервис либо хелперы

лучше сервис

и в конце у тебя будет "ехал сервис через сервис"

но ничего плохого в этом нет

Alex
08.10.2017
10:02:50
у меня как раз такая ситуация

Google
Roman
08.10.2017
10:03:03
ок и что делаешь?

Alex
08.10.2017
10:03:05
слишком ОБЩИЕ сервисы создания

ничего не делаешь, оставляешь два класса имхо.

Roman
08.10.2017
10:03:30
с копипастой?

Alex
08.10.2017
10:03:38
да

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

если не часто - то тем более нет смысла выносить в отдельный класс.

да, если абстракция хорошая, и ты меняешь код и он подходит для обоих классов то все хорошо. А если нет?

ты разбиваешь абстракцию обратно.

Dmitriy
08.10.2017
10:06:04
а кто нибудь знает как внутри Rails Engine получить доступ к локалям, у меня пишет translation missing

доступ к локалям внутри lib

Roman
08.10.2017
10:06:39
у тебя ключ совпадает?

ключ перевода

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

и в том и в другом надо будет достать подписки у пользователя по какойто логике (одинаковой)

и если она изменится - он изменится в двух местах

Alex
08.10.2017
10:09:18
да, если абстракция хорошая, и ты меняешь код и он подходит для обоих классов то все хорошо. А если нет?
+1 часто наворачивал абстракции и в итоге было неудобно что-то менять - частенько 2-3 независимых класса с копипастой лучше

Alex
08.10.2017
10:09:43
у меня больно часто ломаются абстракции связанные с бд

т.е с логикой моделек.

Google
Roman
08.10.2017
10:09:54
+1 часто наворачивал абстракции и в итоге было неудобно что-то менять - частенько 2-3 независимых класса с копипастой лучше
а потом тебе говорят чето поменять и ты бегаешь и меняешь по всему коду, как белка весной

Alex
08.10.2017
10:10:14
а вот если у тебя абстракция не бьется, то ты либо костылишь (пиздец) либо разбиваешь ее еще как то, и тратишь кучу времени.

Alex
08.10.2017
10:11:06
нужен баланс

Alex
08.10.2017
10:11:19
именно.

Roman
08.10.2017
10:11:34
ну это КО конечно)

фишка в том, чтобы понять, где баланс

в целом понятно к чему стремиться

Alex
08.10.2017
10:12:38
выведем правило? абстракцию пьют втроем :)

три точки - выноси в абстракцию. Но это бестолково конечно.

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

Roman
08.10.2017
10:13:14
я обычно на второй

да

а сейчас на проекте есть люди которые сразу выносят

Alex
08.10.2017
10:13:32
у меня просто сейчас на работе сервис ехал через сервис в сервисе воркер с сервисом вызывающий сервис.

Roman
08.10.2017
10:13:34
но один из них реально шарит

и обычно его абстракции потом как раз заходят

Alex
08.10.2017
10:13:51
никогда не угадаешь, да.

Roman
08.10.2017
10:14:23
и главное потом критиковать будут в любом случае)

вынес - ага рано оптимизируешь, не тот уровень абстракции не вынес - копипастер

Google
Alex
08.10.2017
10:14:43
хорошо, когда есть кому критиковать.

в общем самый геморой это баланс.

это ОЧЕНЬ геморойно.

Roman
08.10.2017
10:15:24
не существует проблемы, которую нельзя было бы решить с помощью еще одной абстракции кроме проблемы слишком большого количества абстракций =)

Alex
08.10.2017
10:22:55
как меня эти Router'ы бесят

Sergey
08.10.2017
19:51:56
Добрый вечер, коллеги. Кто то прикручивал к сайту оплату через bitcon? Есть опыт и что лучше юзать? Нашел это https://github.com/blockchain/api-v1-client-ruby . Это норм? И может кто-то опытом поделится?

Sergey
08.10.2017
20:59:52
там удобнее на мой взгляд
Спасибо, посмотрю

Roman
09.10.2017
06:39:33
пуму можно ставить голую наружу

у нее есть защита от медленных клиентов

а перед юникорном надо ставить nginx

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

это ответ на второй вопрос

по разнице: пума на тредах (плюс процессы, в кластер-режиме), юникорн процессовый форкающий

Страница 796 из 1594