← All posts tagged Ruby

beard
Ruby ? programming Есть нЕчто. В процессе работы которого создаются новые треды. Они отрабатывают некоторое время и завершаются.
Что происходит с завершёнными тредами? Как сборщик мусора освобождает ресурсы? Для которых сделан join? А с теми, для которых не сделан?
Интуитивно понятно, что мусорщик не освободит ресурсы, пока остаётся невостребованный value. Конструкция Thread.current.join вроде бы отрабатывает, но не кажется правильной, потому что должна сформировать дедлок — невозможно завершиться, находясь в состоянии ожидания завершения.
Поигрался немного... status треда, для которого сделано current.join возвращается как nil — завершено с выдачей исключения.
А в остальном, хоть делай join, хоть не делай, получай value, не получай — никакой разницы. Ссылок на них больше нет, но память не освобождается. Вообще ничего непонятно с завершением.
beard
Ruby programming bot xmpp4r rumpy В продолжение #1478904 — на практике получено подтверждение умозрительных предположений. message_callback обрабатывается одним тредом. Подписки-отписки запускаются каждый раз новым тредом. При этом, вставшие в очередь мессаджи, блокируют обработку подписок.
beard
Ruby bot blather Подкинули информацию об ещё одной xmpp библиотеке — blather. Почему-то раньше не попала в поле зрения. В отличии от xmpp4r вполне активно пилится. Документацию вроде нашёл. Примеры из неё работают, только самые примитивные. Всё как обычно. Документировать никому не интересно. Ничего не понимаю.
beard
Ruby programming bot xmpp4r rumpy Победил activerecord. Соединения разблокируются и возвращаются в пул. С первым оказалось просто. Со вторым возникли новые вопросы. Выводы.. Недостаточное понимание логики message_callback. Создаётся впечатление, что они обрабатываются последовательно, в цикле, одним тредом. Подписки-отписки обрабатываются каждая новым тредом. Надо глубже ковырять xmpp4r.
Теперь ждать, когда вернутся авторы rumpy.
beard
Ruby programming bot xmpp4r rumpy Странное поведение activerecord. В процессе работы создаётся пять соединений с базой. Первое при запуске бота и синхронизации ростера и базы, далее главный поток останавливается и через него больше ничего не передаётся. Через второе обрабатываются сообщения (message_callback). Оставшиеся три формируют роунд-робин пул, который обрабатывает подписки-отписки. Как-то это непонятно и неправильно. Как разблокировать и вернуть в пул первые два? Чтобы использовались все равномерно.
beard
Ruby А вот кто не хочет ли пойти на Piter.rb #3 – Встреча Ruby программистов в Питере, 3 марта 2011 — habrahabr.ru
В сентябре тож собирался, так и не пошёл. В этот раз надо взять себя в руки, тем более что-то про Эрланг рассказывать будут :)
beard
Ruby bot Нашёл простого ростерного бота — socket7.net — требует Jabber::Simple 0.8.7+ — xmpp4r-simple.rubyforge.org — которая является обёрткой вокруг xmpp4r — home.gna.org
Только вот на гуглокоде лежит версия xmpp4r-simple-0.8.4 и указание идти за исходниками на гитхаб... а там — That page doesn't exist!
И куда дальше??
beard
Ruby FreeBSD fail Для использования с Rails рекомендуется Ruby версии 1.8.6 и 1.8.7. Ruby 1.9 лучше пока не использовать. We recommend Ruby 1.8.7 for use with Rails. Ruby 1.8.6, 1.8.5, 1.8.4 and 1.8.2 are still usable too, but version 1.8.3 is not.
С 1.9.1 ничего и не получилось. mongrel не собрался. rails хочет rake, в 1.9.1 он уже идёт в комплекте, но его почему-то не видно. sqlite притащил за собой tcl. В системе срач, весёленький такой. Как бы теперь это всё назад отковырять..