Rails 4.1.4 ruby 2.2
Faye контроллер выглядит вот так
class RealAppointmentsController < FayeRails::Controller
end
Монтируется вот так
config.middleware.delete Rack::Lock
config.middleware.use FayeRails::Middleware, mount: '/faye', :timeout => 25 do
map '/appointments' => RealAppointmentsController
map :default => :block
end
Используется как SSE, т.к. все реализации SSE на rails выглядят как горы костылей.
Вызывается из методов стандартных контроллеров вот так
RealAppointmentsController.publish('/appointments', @appointment.to_json)
По возможности, в нужных местах делается отмена подписки на клиенте через
subscription.cancel();
И тем не менее сервер отъедает на каждого клиента по 5-15мб из системы. Даже с учетом того что ruby не возвращает занятую память в систему он рано или поздно должен переставать забирать память из системы, а этого не происходит. Т.е. в девелопменте с одним клиентом и кучей обновлений страницы планомерно съедает всю память.