@proRuby

Страница 172 из 1594
Nikolay
03.09.2016
10:33:19
не, чувак

Alex
03.09.2016
10:33:19
я тоже подумал что это будет удобно, поэтому начал пилить. Мне уже дважды приходилось прикручивать смски, и я понял что там этого не хватает.

Nikolay
03.09.2016
10:33:44
на самом деле у каждой железки свои приколы

Google
Alex
03.09.2016
10:34:57
Я сейчас застрял над тем как сделать нормальное апи под гем, но в процессе дискуссии вы напомнили про то что я вообще объект могу вернуть, крутяк.

Nikolay
03.09.2016
10:36:47
Ну, например?
я видел три железки. жсм гейт шо у меня на столе мелкий, размером с диалапный модем. вторая железка - это юнитовый тазик в стойке, от которого выходил тоже рж45 + толстое кабло для кучи жсм антенн

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

Alex
03.09.2016
10:37:27
я видел три железки. жсм гейт шо у меня на столе мелкий, размером с диалапный модем. вторая железка - это юнитовый тазик в стойке, от которого выходил тоже рж45 + толстое кабло для кучи жсм антенн
Какая разница? во первых я ориентировал свой гем для обычных хттп апи. Во вторых бэкенд может вообще как хочет отправлять, главное чтобы он результат возвращал апишке.

Nikolay
03.09.2016
10:37:30
и имел настройки на доступ к смс центрам операторов

Alex
03.09.2016
10:38:03
Смотри, мой юзкейс

есть сайт. Я хочу отправлять смс.

Что я сейчас делаю? пилю класс под конкретный смс сервис.

И мне надо разруливать чтобы в тестовых окружениях результат мокался.

А на стейжинге/проде реально отправлялся.

В девелопменте я хочу видеть какой код был. В тесте мне похуй.

Nikolay
03.09.2016
10:38:49
разница большая. окей, на примере своего ерр гема могу только сказать, что мне пришлось отказаться от программной генерации хмл файлов с запросами по одной причине - все ерр партнеры даже в рамках рфц для работы с доменами косячили такую хуйню, что мне проше взять шаблон и обработать его ерб

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

Google
Alex
03.09.2016
10:39:48
Большинство смс апи это хттп с некоторой апишкой.

статус коды и так далее.

Nikolay
03.09.2016
10:40:15
угу

Alex
03.09.2016
10:40:36
Вот под них я и пишу объединенное апи, чтобы смс-бэкенд можно было как перчатки менять не переписывая ровным счетом ничего.

и также легко подключить в свой проект

Nikolay
03.09.2016
10:40:49
поэтому я бы сделал свой гем в котором в конфигах прописывал а) куда, б) как отправлять и как искать ответ

три вещи которые нужны

Alex
03.09.2016
10:41:12
подключил гем апи, подключил гем бэкенда, зарегал бэкенд в геме, юзаешь гемовое апи.

Nikolay
03.09.2016
10:41:30
подключил гем, прописал в конфигах три пункта, профит )

ты имхо усложняешь

Alex
03.09.2016
10:42:54
SMS.configure do |c| c.register_backend :smsru, SMS::Backend::Smsru, token: ENV['SMS_RU_TOKEN'] end resp = SMS.send_sms(phone, text) if resp.success? # good else # backend returned bad end

Что тут сложного?

и чонить типа gem 'sms' gem 'sms-backend-smsru'

в гемфайле.

Я тут честна не вижу ничего сложного )

ojab
03.09.2016
12:42:38
зачем имя бекенда обязательно указывать? Его можно по умлочанию из имени класса делать

алсо почему это Symbol, а не строка?

Nikolay
03.09.2016
13:46:14
туточки?

ой

Google
Nikolay
03.09.2016
13:48:12
у меня почему то при model.save пропадает в базе связь с моделью belongs_to (

хотя has_many и belongs_to прописаны

при этом связь с другой моделью держится и сохраняется

ojab
03.09.2016
13:52:05
ассоциация становится nil`/`NULL в базе?

Nikolay
03.09.2016
13:52:24
угу...

ojab
03.09.2016
13:52:58
если присвоить не модель, а модель_id — тоже обнуляется?

Nikolay
03.09.2016
13:53:29
ща попробую

domain => #<Domain:0x0055af4d4f2458 domain_zone_id: "101d3903-5c55-4409-8428-d712b4d39ce2", client_id: "55b8636c-7796-4823-ace8-978ba306c389", && >Domain.first => #<Domain:0x0055af4ec32b68 domain_zone_id: nil, client_id: "55b8636c-7796-4823-ace8-978ba306c389",

первое то что в памяти, второе уже сохраненная в постгре копия

единственное что поменялось - это я сменил калбек установки это доменной зоны с before_save на after_initialize

after_initialize :set_properties def set_properties domainsrc = self.name_idn.insert(0, 'http://') unless self.name_idn.match('http://') self.name_ascii = Addressable::URI.parse(domainsrc).normalized_host.downcase.split('.')[0] self.name_idn = domainsrc.gsub('http://', '').split('.')[0] zone = Addressable::URI.parse(domainsrc).normalized_host.downcase.split('.')[1..-1].join('.') self.domain_zone = DomainZone.find_by(name_ascii: zone) end

ojab
03.09.2016
13:58:44
after_initialize будет дёргаться после каждого .find и прочих инициализаций, ты в курсе?

ojab
03.09.2016
13:59:06
так что для единичной инициализации лучше юзать after_initialize :set_properties, if: :new_record? или подобное

Nikolay
03.09.2016
13:59:12
тоесть вернуть на before_save?

а где вообще про эти калбеки развернуто почитать?

ojab
03.09.2016
13:59:50
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

я обычно юзаю before_validation, on: :create если нужно какими-то данными заполнять при создании

Nikolay
03.09.2016
14:00:39
ну вот этот калюек который after_initialize не опитсан вообще

ojab
03.09.2016
14:01:12
>Lastly an after_find and after_initialize callback is triggered for each object that is found and instantiated by a finder, with after_initialize being triggered after new objects are instantiated as well.

Nikolay
03.09.2016
14:01:16
а. описан, но не в списке..

Google
Nikolay
03.09.2016
14:04:52
тогда мысл этих двух колбеков?

ojab
03.09.2016
14:05:47
сейчас, наверное, уже нет особого смысла

раньше можно было какой-нибудь аттрибут десериализовать, навпример

Nikolay
03.09.2016
14:06:36
ххм

ojab
03.09.2016
14:06:48
чото я не очень понимаю что ты в методе выше пытаешься сделать

зачем нужен domainsrc?

Nikolay
03.09.2016
14:06:58
у меня например пару свойств хранятся как массив в строке постгревый и как hstore

ojab
03.09.2016
14:07:02
URI::parse и без схемы сработает

сейчас десериализация есть из коробки

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

Admin
ERROR: S client not available

Nikolay
03.09.2016
14:07:55
идея в чем. адрессабл работает только с полным uri т.е http://some.shit.here

если сказать адрессаблу распарсить 'some.shit.here' оно не отловит там хост

ojab
03.09.2016
14:08:57
а

http://api.rubyonrails.org/classes/ActionDispatch/Http/URL.html

я просмотрел что он используется, думал что ActionDispatch::Http::URL

Nikolay
03.09.2016
14:09:36
мне адрессабл важен потому что идн домены

типа москва.говно

а либидн - так себе получился

ojab
03.09.2016
14:11:02
ActionDispatch::Http::URL вполне обрабатывает нелатиницу

Google
Nikolay
03.09.2016
14:11:25
ээ. мне не сайты нужны

а доменные имена

ojab
03.09.2016
14:11:55
punycode в смысле?

Nikolay
03.09.2016
14:12:13
ога

я их адресаблом конверну

*чу

ojab
03.09.2016
14:12:34
а, ок

А зачем в базе/где-то ещё кроме общения с внешним миром punycode хранить?

(общение с внешним миром — epp, а не клиентксий интерфейс)

Nikolay
03.09.2016
14:14:10
чем постоянно дергать конвертер проще сохранить в поле

ojab
03.09.2016
14:15:09
и получить потенциальную неконсистентность в базе

Nikolay
03.09.2016
14:15:29
неконсистентность чего?

у домена после создания можно только сменить нс сервера и статус. ну и контакты владельца

ojab
03.09.2016
14:15:58
несовпадение punycode_name и unicode_name

ну да как тебе удобнее, спрочем

Nikolay
03.09.2016
14:16:37
в принципе имя домена после создания не отредактировать ))

ох епт. 600 доменов в базу вливается

надо пагинатор нарисвать

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

чтобы два раза код не писать

ojab
03.09.2016
14:42:44
а зачем его делать приввтным в таком случае?

Nikolay
03.09.2016
14:44:04
это тот самый set_properties который из калбека дергается перед сохранением

хотя если я его открою наверное ничего не изменится

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