
trickster
11.10.2016
14:19:44
ну и в браузере вывело только с .json

Nick
11.10.2016
14:20:30
Пушо браузер в отличие от курла ещё дополнительные заголовки шлёт, запрашивая HTML
Ничего странного

trickster
11.10.2016
14:21:41
в любом случае спасибо ребят

Google

trickster
11.10.2016
14:21:45
очень вам благодарен

Alex
11.10.2016
14:22:00
а если не указать то будет обрабатываться как html
если хочешь всегда обрабатывать как json, подставь к урлу .json
например /posts.json /post/1.json
Вариантов много на самом деле.

ojab
11.10.2016
14:24:02
xhr шлёт js, а не json

Alex
11.10.2016
14:25:17
Да, возможно. Как то в jQuery можно указать что нужно запросить именно json, и вроде без content-type это делается.
Точнее сам jQuery шлет content-type, но ты просто методы дергаешь а не вручную заголовок задаешь.

Иван
11.10.2016
14:29:40
чего то я так и не понял в какой момент руби решает проверить надклассы обособленного класса

Alex
11.10.2016
14:30:07
Возьми код который был в статье
там вроде все способы добавить метод к классу
и смотри в каком порядке они вызываются.

Google

Иван
11.10.2016
14:32:17
там же нет надклассов синглтон класса

Alex
11.10.2016
14:36:47
Добавь )

ojab
11.10.2016
14:37:33

Иван
11.10.2016
14:37:58

Alex
11.10.2016
14:38:25
Наследование - зло, ухахаха.

ojab
11.10.2016
14:39:36

Иван
11.10.2016
14:40:01
суперкласс синглтон класса
или суперкласс объекта
?

ojab
11.10.2016
14:40:38
объекта
extend по сути добавляет суперкласс для singleton_class

Иван
11.10.2016
14:41:15
ну тогда при вызове метода класса мы должны проваливаться в класс Class
и не наследовать методы класса надкласса
а они наследуются
при вызове метода класса объектом явдется сам класс
а его суперкласс - класс Class
class A
def self.new
"we are in A.new"
end
end
class B < A; end
B.new # "we are in A.new"

ojab
11.10.2016
14:44:38
https://gist.github.com/ojab/b9dc74ebdd667ae3b2686f0fa05b4085
сначала вызывается "A called", потом "C called", потом "B called"

Иван
11.10.2016
14:47:47
получается что перед тем как проверять суперкласс объекта(класс Class) выполняется поиск методов в синглтон классе и его надклассах?

Google

Alex
11.10.2016
14:54:31
Ребят, гляньте пожалуйста: https://github.com/Fedcomp/active_sms
Нужен незамыленный глаз (как у меня). Чего не хватает? на какие косяки в документации бросаются глаза?
(ну кроме contibuting который я только что добавил)

ojab
11.10.2016
14:58:42
так лучше?
снизу порядок вызова, соответственно

Alex
11.10.2016
14:59:42
Т.е провайдеров?

ojab
11.10.2016
14:59:54
да

Alex
11.10.2016
15:00:04
Окей спасибо!
да
Какие сервисы использовал для отправки смс?

ojab
11.10.2016
15:02:53
соответственно перед методами Class у singleton_class будут вызваны методы singleton_class'ов Object и BasicObject

Иван
11.10.2016
15:08:24
а вот это -
class B
def self.xxx
"B called"
end
end
и вот это -
B.singleton_class.send(:define_method, :xxx) do
"B.singleton_class called"
end
одно и то же ведь по сути?
ну и тоже самое с A классом

ojab
11.10.2016
15:17:02
эм
да
там предполагался define_singleton_method и оно не должно вызываться, ага

Иван
11.10.2016
15:21:13
а как ты получил результат?
ну я про это -
"A.singleton_class called"
"A called"
"C called"
"B.singleton_class called"
"B called"
"Class called"

ojab
11.10.2016
15:29:55
меняешь xxx на xxxx, смотришь что вызывается

Google

Иван
11.10.2016
15:31:41
то есть получается что перед тем как уйти искать метод в Class (ну и далее Module Object Kernel) проверяются все суперклассы синглтон_класса
правильно?

ojab
11.10.2016
15:32:15
Class — такой же суперкласс синглтон класса как и все остальные
см. вывод внизу
так что да

Alex
11.10.2016
15:33:42
А люкуп не по цепочке ancestors идет?

ojab
11.10.2016
15:34:13
по цепочке

Иван
11.10.2016
15:37:49
но в случае метода класса по цепочке ancestors синглтон класса получается

Admin
ERROR: S client not available

Иван
11.10.2016
15:38:12
A.singleton_class.ancestors - вот так получается
ладно, всем спасибо, а ojab отдельное большое

Alex
11.10.2016
15:59:53
да
https://github.com/Fedcomp/active_sms-backend-smsru
Запилил доки. Пойдет?

ojab
11.10.2016
16:03:51
active_sms-backend-smsru $ git grep 'ActiveSMS::Response'
$
то есть результат оно не отдаёт?

Alex
11.10.2016
16:04:59
О, точно. Забыл скопипастить из оригинальной доки обработку респонса
базовый класс входит в поставку основного гема
https://github.com/Fedcomp/active_sms/blob/master/lib/active_sms/backend/base.rb
respond_with_status
https://github.com/Fedcomp/active_sms-backend-smsru/blob/v0.0.2/lib/active_sms/backend/smsru.rb#L22

Google

Alex
11.10.2016
16:07:03
Официального гема у ребят нет. Поэтому чистый класс дергающий http
Единственное что, я еще funds api не продумал. Пока без него.
Нужно побольше реализаций запилить.

ojab
11.10.2016
16:09:12
внимание, вопрос
нафиг каждый раз делать Backend.new?

Alex
11.10.2016
16:09:47
Потому что класс создается и подыхает. Реализации могут на это рассчитывать.
Внимание вопрос, зачем rails каждый раз делает Somecontroller.new?
чтобы реализацию проще было писать.

ojab
11.10.2016
16:11:17
https://github.com/Fedcomp/active_sms-backend-smsru/blob/master/lib/active_sms/backend/smsru.rb
где тут упрощение реализации от того, что каждый раз создаётся объект?

Alex
11.10.2016
16:11:43
@api_id например
Не вижу смысла делать бэкенд stateful. Есть хоть один пример где это оправдано?

ojab
11.10.2016
16:12:55
я не вижу тут state'a.

Alex
11.10.2016
16:13:22
Ты его предлагаешь реализовать.

ojab
11.10.2016
16:13:37
Единственное возможное изменение — @api_id, через active_sms его можно выставить только при инициализации бекенда

Alex
11.10.2016
16:13:41
чтобы бэкенд инстанцировался лишь раз.

ojab
11.10.2016
16:14:02
зачем его вообще инстанциировать?

Alex
11.10.2016
16:14:04
Доступа к бэкенду у тебя все равно нет (не должно быть)
инстанцированные классы писать проще имхо конечно.

ojab
11.10.2016
16:14:31
какие минусы будут, если это будет class и class_method'ы?
плюсы — меньше аллокаций и отсутствие повторной валидации при каждой отправке