
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

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
Лан, буду 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

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
Это правда не релиз еще.

Lupsick
06.11.2016
10:57:18
В жсоне

Alexander
06.11.2016
11:21:28

Google

Lupsick
06.11.2016
11:22:35

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
квери обжекты, сервис обжекты, декораторы и форм обжекты отлично интегрируются с активрекордом)

Lupsick
06.11.2016
12:00:21

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 в большинстве проектов - в принципе очень ничего так, хотя иногда и не совсем интуитивно работает

Lupsick
06.11.2016
12:03:47

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
Посмотри в Вики у них. Вроде там было