
Roman
26.03.2018
09:43:29

Alex
26.03.2018
09:43:51
у меня что то типа evaluation версии было, он там для пхп скрипта показывал какие запросы были

Vadim
26.03.2018
10:47:25
Кто то писал скриптики с помощью Watir'a чтобы делать какие то действия на сайте?)

Максим
26.03.2018
15:11:52
чё за хуйня

Google

Максим
26.03.2018
15:11:52
id = contact['id'].to_i
cntct.class == Email ? (flat.contacts.find(id: id).emails << cntct) : (flat.contacts.find(id: id).phone_numbers << cntct)
Couldn't find Contact with 'id'={:id=>23882}
как так
почему айди не интеджер выходит
я же напрямую его в интеджер перевожу и проверял что он переводится в него
почему он видит переменную как хеш а не как интеджер
несмотря на то что я напрямую указал ему что это интеджер

Roman
26.03.2018
15:15:44
в find надо просто айди передавать
find(id)
@Qew7777 ^^

Максим
26.03.2018
15:16:45
реал
спасибо
уже подсказали

Google

Максим
26.03.2018
15:16:58
так тупо ошибся

Roman
26.03.2018
15:17:11
бывает
но вообще код немного ужасен

Максим
26.03.2018
15:21:33
подскажешь как лучше?
у нас просто все дедлайны просраны
пишу уже лишь бы работало даже не думая

Женя
26.03.2018
15:47:45

Roman
26.03.2018
15:52:51
подскажешь как лучше?
contact_to_update = flat.contacts.find(id)
case cntct
when Email
contact_to_update.emails << cntct
when Phone # ну это я так думаю, что тут у вас Phone
contact_to_update.phone_numbers << cntct
else
raise ArgumentError, "contact of type #{cntct.class} is not supported"
end
как-то так
хотя все равно вопросы к количеству переменных по типу "контакт" в коде
но тот код, что я написал, хотя бы поможет в будущем не нарушать open/close principle

Alena
26.03.2018
15:56:27
Привет)) ребята что это такое не пойму?

Roman
26.03.2018
15:57:16
Гитхаб о тебе заботится

Roman
26.03.2018
15:57:33
гитхаб предупреждает, что у тебя одна из зависимостей имеет известную уязвимость

Максим
26.03.2018
15:58:16

Roman
26.03.2018
15:59:21
спасибо
хотя вообще-вообще, там должен быть STI и полиморфная ассоциация, но не думаю, что это вам скоуп попадет, с учетом прошедшего дедлайна

Максим
26.03.2018
16:00:07
sti?

Roman
26.03.2018
16:00:09
то есть ты просто пишешь contact_to_update.entry << cntct а оно само смотрит какого оно типа
single table inheritance

Максим
26.03.2018
16:00:19
полиморфная ассоциация "контакт"?

Roman
26.03.2018
16:00:19
но это не обязательно

Google

Roman
26.03.2018
16:00:33
да, у тебя будет contact_type - phone email blablabla
и contact_id

Максим
26.03.2018
16:00:43
просто у них же поля разные
типа у одного номер телефона и имя
у другой например просто мыло

Roman
26.03.2018
16:01:05
да, STI не совсем

Alena
26.03.2018
16:01:41

Roman
26.03.2018
16:02:14

Alena
26.03.2018
16:03:54
Спасибо)

Roman
26.03.2018
16:04:11

Roman
26.03.2018
16:48:40
Обычно sti ни к чему хорошему не приводит, и его в итоге выпиливают :(

Alex
26.03.2018
16:49:49

Alex
26.03.2018
16:51:14
Всем привет! Кто-нибудь использовал discourse? Я правильно понимаю, что в исходники лучше никаких правок не вносить, так как при обновлении все это затрется?

Alex
26.03.2018
16:55:55
да

Alex
26.03.2018
16:58:22
а плагинами там только фронт можно разрулить?

Roman
26.03.2018
17:04:28
++++
значит оно изначально не было нужно. STI - хороший способ избавиться от if-конструкций. просто некоторые этим пользуются неправильно

Roman
26.03.2018
17:06:08

wi11son
26.03.2018
17:08:55
Гайз, можно рубиконфу порекламить?

Anton
26.03.2018
17:09:29
?

Google

Roman
26.03.2018
17:09:30
Это как же с sti от ифов можно избавиться?
например, если есть у тебя разные типы чего-то, что рендерится по-разному
выдуманный пример: напротив телефонов надо рисовать иконку домика или мобилы, в зависимости от того, городской телефон или мобильный
вместо
def phone_icon
if phone_type == :landline
'house_icon.png'
else
'mobile_phone_icon.png'
end
end
делается
class Landline < Phone
def icon
'house_icon.png'
end
end
class Mobile < Phone
def icon
'mobile_phone_icon.png'
end
end

wi11son
26.03.2018
17:09:54
https://www.meetup.com/ru-RU/saintprug/events/249120635/
9е июня, СПб

Roman
26.03.2018
17:11:58

Roman
26.03.2018
17:12:12
они будут в фреймворке, а не в твоем коде

Roman
26.03.2018
17:19:00

Roman
26.03.2018
17:20:25
или я не понял, о чем ты =)

Roman
26.03.2018
17:22:44
или я не понял, о чем ты =)
Допустим, твой метод, который мы рефакторим, вызывается в контроллере, как мы в нем избавимся от ифов с sti?

Roman
26.03.2018
17:23:28
аа, тут ActiveRecord поможет
phone = Phone.find(params[:id]) вернет тебе нужный класс искаропке

Roman
26.03.2018
17:24:11

Roman
26.03.2018
17:25:07
то есть по сути да, иф переезжает в код activerecord
но тебе уже на этом этапе все равно

Roman
26.03.2018
17:26:08

Roman
26.03.2018
17:26:22
главное не упарываться
чтобы не было 1 общее поле и 18 необщих

Andrey
27.03.2018
05:47:38
Привет! Как можно заставить простое веб-приложение на синатре (на самом деле не важно на чём) слушать два интерфейса и/или порта ?
Что я хочу:
10.10.10.10:1234/foo => 200 OK .. blablabla
11.11.11.11:4321/foo => 200 OK .. foofoofoo
nginx (и прочие не рубишные веб-серверы) заюзать не могу т.к. приложуха будет запускаться в облаке а-ля bluemix
Я пытался извернуться так http://paste.org.ru/?n7s2gz , слушать порты оно научилось, но отвечать на запросы не стало )))
видимо, мне нужно взглянуть на Rack и не мучить бедного Синатру
Вот так даже работает http://paste.org.ru/?k4j697
Но чувствую я, что есть более элегантный способ сделать это.

Google

Dima
27.03.2018
06:56:32
А вот например рубрика Benelovent Ruby я тут игрался на рабочем месте в руби, и получился у меня infinite loop или dead loop. Кто знает как из него выйти?
a = 1
b = ->{p "this is #{a}"; a+=1; p "x" if true; return if true}
loop(&b)
p a

Alex
27.03.2018
06:59:07

Oleg
27.03.2018
07:01:02
Там выше просили чтобы чисто на рубях
Мол некуда втыкать
Но вообще да, адекватным способом конечно же будет через сервер спереди, который будет всё что надо проксировать, лимитировать и тп ибо руби это приложение в первую очередь
Также с отдачей статики
Но для маленьких приложений это не нужно, с другой стороные если надо 2 айпи - что-то не маленькое значит

Alex
27.03.2018
07:13:41

Oleg
27.03.2018
07:14:14
Надо пример тогда
Под маленьким ещё можно подразумевать стандартное, да
Это может быть скрипт на полтора гема, но с много портами, да, тогда всё ок, оно маленькое, но надо много портов

Alex
27.03.2018
07:15:45
многопорт, хихихи

Alex
27.03.2018
07:22:02

Oleg
27.03.2018
07:22:25
Можно поизвращаться с райзом
Но это костыль

Dima
27.03.2018
07:22:29

Oleg
27.03.2018
07:22:36
А это одно и тоже

Alex
27.03.2018
07:22:51
нет, с проком должен работать return или break

Oleg
27.03.2018
07:22:58
Хм