Что касается Голиафа, Голиаф основан на Thin (я начал с тонкого кода и когда оттуда). Большая часть кода изменилась (например, с использованием http_parser.rb вместо анализатора mongrel), но исходной базой был Thin.
Запуск сервера - это просто выполнение вашего файла .rb. Система такая же, как в Sinatra (я позаимствовал код у Sinatra, чтобы он работал). Вы также можете написать свой собственный сервер, если хотите, в репозитории есть примеры, если вам нужен дополнительный контроль. Мы хотели, чтобы запуск был максимально простым и требовал как можно меньше создаваемых файлов. Итак, запуск файла .rb и использование Бога для запуска / перезапуска серверов работали хорошо.
Тесты, которые вы пишете с помощью RSpec / Test :: Unit и запускаете тестовый файл, как обычно. Тесты для Голиафа запустят реактор и отправят реальные запросы API от ваших модульных тестов (обратите внимание, что это не форк, он использует EM для запуска реактора в том же процессе, что и тесты). Все это упаковано в test_helper, который предоставляет Голиаф.
С Голиафом не существует файла для рэка. Вы запускаете файл .rb напрямую. В приложении Голиафа есть команды использования промежуточного программного обеспечения, встроенные прямо в файл .rb. Для нас в PostRank это был самый простой и понятный способ определения сервера. Все ваши операторы использования (с любыми дополнительными битами, которые они используют) были видны во время работы с файлом, а не с несколькими файлами. Для нас это была победа, ваш пробег может отличаться.
Понятия не имею, сработает ли стойка websocket, но в репозитории есть ветка для отправки поддержки websocket прямо в Голиафа. Некоторое время назад я не смотрел на это (были исправлены некоторые вышестоящие ошибки, которые требовались), но его не должно быть слишком сложно, чтобы его запустить и запустить и, с исправленным вышестоящим, слить в master.
На ваш вопрос о em-synchrony и thin у вас должна быть возможность обернуть блок EM.synchrony {} вокруг вашего кода. Метод синхронизации просто вызывает EM.run и оборачивает ваш блок в новое волокно. Если реактор уже работает, EM просто немедленно выполнит пройденный блок. Пока Тонкий уже запустил реактор, он должен работать нормально.
Обновление: Ветвь веб-сокетов была объединена с основной линией Голиафа, поэтому при работе с HEAD имеется поддержка WebSocket, встроенная непосредственно в Голиаф.