@proRuby

Страница 262 из 1594
Alex
06.11.2016
07:49:57
А интерфейс отправки единый. Фишка в том чтобы легко менять сервисы без перепаисывания кода.

Да, но тогда суть идеи теряется.

Ты не сможешь просто так перепрыгнуть с одного на другой сервис потому что у тебя в базе _на проде_ уже формат номеров неверный

kolas
06.11.2016
07:50:43
пусть подключенный сервис сам формат меняет как ему надо

Google
Alex
06.11.2016
07:50:54
пусть подключенный сервис сам формат меняет как ему надо
Значит они должны приходить в одном формате все.

Alexander
06.11.2016
07:51:28
У меня просто сейчас concern подмешивается в модели с телефонами для отдачи номера, отформатированного под формат шлюза

Alex
06.11.2016
07:51:38
я бы сделал возможность выставить дефолтную зону в initializer'e
Я думаю это должно самоп ирложение делать при регистрации пользователя.

Alexander
06.11.2016
07:51:50
Поэтому проблем смены шлюза не будет )

Alex
06.11.2016
07:52:08
Гемом проще все это, инкапсулированная логика, простой интерфейс и все оттестировано.

Я ща еще хелпер для rspec пишу чтобы легко отправку смс в геме тестировать

Alexander
06.11.2016
07:52:47
Да, полезная вещь

Alex
06.11.2016
07:53:01
типа, expect { MyService.run(*blah) }.to send_sms.to("+7999").with_text("blah") .and_return(status: :success, meta: :stuff)

круто же ну

Alexander
06.11.2016
07:53:23
А если сделать в конфиге поддержку формата СМС?

Типа хоть в виде регуляок

Alex
06.11.2016
07:53:46
Alexander
06.11.2016
07:53:56
В initializer

Google
Alex
06.11.2016
07:54:06
вот смотри, ты пилишь реализацию. Чтобы проводить какие то манипуляции с номером, ты должен ЗНАТЬ какой формат номера будет

Значит он должен быть один для всех.

kolas
06.11.2016
07:54:56
да и так один формат будет, если разработчик не даун

Alexander
06.11.2016
07:54:56
Вида ActiveSms.format = /\d{10}/

Alex
06.11.2016
07:55:11
да и так один формат будет, если разработчик не даун
Проще застраховать разработчика от возможных проблем.

Вида ActiveSms.format = /\d{10}/
Это теряет всякий смысл т.к реализации не могут нейросеть с собой таскать чтобы ванговать. Им надо знать какой формат вернется.

Лан, буду ArgumentError кидать, надеюсь нормальное решение.

Alexander
06.11.2016
07:56:50
А, точно, ты же еще конвертацию хочешь делать

Alex
06.11.2016
07:57:08
Верно, у некоторых сервисов формат может быть свой.

У кого то в базе лежат локального формата номера да?

Alexander
06.11.2016
07:58:20
Хм, а почему не хочешь сделать кастомный класс ошибки?

У меня без кода страны хранятся

Ибо пока не надо

Alex
06.11.2016
07:58:47
Хм, а почему не хочешь сделать кастомный класс ошибки?
Ты должен в development это отловить. В production у тебя уже в модельке юзера должна быть валидация на телефон.

я бы сделал возможность выставить дефолтную зону в initializer'e
В общем годная идея, спасибо. Надо подумать.

Alexander
06.11.2016
08:00:15
Хм, тогда оставь возможность оставить выброса ошибки для прод

Alex
06.11.2016
08:00:27
Ну у тебя будет ArgumentError кидаться.

Не катит?

Alexander
06.11.2016
08:00:38
А, тогда ок

Провода, наверное было бы понятнее ActiveSms::PhoneFormatError

Google
Alexander
06.11.2016
08:01:17
Или что-то подобное

Alex
06.11.2016
08:01:37
Наверное на всякий случай лучше действительно кастомную ошибку сделать.

Ладно всем спасибо, пару годных идей для себя усвоил.

Alexander
06.11.2016
08:02:29
Угу, а то вдруг еще какой гем тоже будет аргумент еррор кидать - фиг отловишь нормально )

Alex
06.11.2016
08:02:56
Тоже верно.

Если будет время - сделаю гем для смс услуг
А что за смс услуги? кинь ссылку?

Alexander
06.11.2016
08:19:30
sms-uslugi.ru

там сейчас есть старый гем, но его поддерживать лень )

Alex
06.11.2016
08:20:47
Обычно есть апишка на основе которой можно запилить свой гем быстро и просто.

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

Alexander
06.11.2016
08:28:21
Да, там только после регистрации у них есть документация )

Alex
06.11.2016
08:28:44
жесть конечно.

Alexander
06.11.2016
08:29:18
https://github.com/drakmail/sms-uslugi-api/blob/master/lib/sms-uslugi-api.rb

Там примерно такое API, реализуется очень просто

Alex
06.11.2016
08:32:56
Любое нормальное апи быстро пишется.

https://github.com/Fedcomp/active_sms-backend-smsru/blob/master/lib/active_sms/backend/smsru.rb Вот например моя совместимая с active_sms реализация под sms.ru

Это правда не релиз еще.

Alexander
06.11.2016
11:21:28
Мне нужен тип sti
А нет в options что отдаст все атрибуты?

Google
Alexander
06.11.2016
11:23:59
Не знаю
Ну так проверил бы перед тем, как хакать

Lupsick
06.11.2016
11:31:39
Ну так проверил бы перед тем, как хакать
Похуй на активрекорд, будет время заменю

Alexander
06.11.2016
11:45:21
Похуй на активрекорд, будет время заменю
Тоже решение, хоть я и не рвусь здесь его пропагандировать. Но уже два-три вопроса (проблемы) с active record (этот, с отношениями у Conversation) имели для меня очевидное решение со стороны Sequel

Lupsick
06.11.2016
11:55:52
Sequel хорош во всем

Alexander
06.11.2016
11:57:18
Sequel хорош во всем
не уверен, нужно грамотно с ним работать и разделять логику, но, следуя паттену ActiveRecord, он реализует его намного лучше, чем одноимённый gem

Lupsick
06.11.2016
11:57:38
Я уверен

Admin
ERROR: S client not available

Lupsick
06.11.2016
11:58:10
И не надо следовать паттерну активрекорда

Хранить хоть какую то логику в модели это абсурд

Туда же идет валидация

Все что связано с датасетом - ок в модели

Alexander
06.11.2016
11:59:59
квери обжекты, сервис обжекты, декораторы и форм обжекты отлично интегрируются с активрекордом)

Alexander
06.11.2016
12:00:45
* совмещаются, если точнее

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

бонусом получаешь реюзабельность и тестируемость +100500 )

Lupsick
06.11.2016
12:01:40
Но повторяю что без валидации

Alexander
06.11.2016
12:02:13
Ну да, если использовать active record без фанатизма - то всё ок

Google
Alexander
06.11.2016
12:02:21
Для валидаций форм обджекты только в путь

Lupsick
06.11.2016
12:02:40
Активрекорд заставляет меня делать простые вещи сложно

Alexander
06.11.2016
12:03:02
Сейчас использую reform в большинстве проектов - в принципе очень ничего так, хотя иногда и не совсем интуитивно работает

Alexander
06.11.2016
12:04:07
всё хочу его потыкать, но пока руки не доходят =(

Alex
06.11.2016
15:57:48
А потом в базе оказываются неконсистентные данные да?

*невалидные

Alexander
06.11.2016
16:00:51
смотря что подразумевается под валидными данными – как правило очень часто оказывается, что в разных кейсах использования моделей разные валидации нужны – тогда в случае толстых моделей у тебя начинают появляться всякие кондишенелы и прочий ад, что в итоге приводит к размытию логики валидаций

ну и плюс валидации, следящие за консистентностью именно можно запихнуть в модель, как правило их не так много

Lupsick
06.11.2016
16:17:34
у вас рельсы в головах

Felix
06.11.2016
16:17:54
РГМ?)

Alexander
06.11.2016
16:18:28
"И горжусь" ?

johnny
06.11.2016
16:21:53
Подскажите пожалуйста, как убрать возможность входа на страницу регистрации gem devise?

для незарегистрированных юзеров

Mikhail
06.11.2016
16:22:57
Ты хочешь выключить регистрацию для незарегистрированных юзеров?

Felix
06.11.2016
16:24:14
Mikhail
06.11.2016
16:24:50
Ну ему же именно для незарегистрированных юзеров

Alexander
06.11.2016
16:25:27
Посмотри в Вики у них. Вроде там было

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