2013-07-31 5 views
2

Я пытаюсь написать приложение Sinatra с веб-окнами. Мое приложение Sinatra использует Postgres в качестве бэкэнд (отлично работает без веб-сайтов). Я добавил eventmachine и em-websocket, чтобы получить поддержку моего приложения ws. Все работает отлично, за исключением того, что после x количество запросов, я получаю время ожидания ActiveRecord ConnectionPool. Похоже, EventMachine не выпускает соединения DB, но я никогда не использовал EM раньше, поэтому я не совсем уверен, что делать. Каков наилучший способ для нас использовать эти четыре технологии (AR + EM + PG + Sinatra) без всякого воспламенения? Идеально ищет какой-то род ConnectionPool, который заставит EM освободить соединение с БД в конце запроса или что-то в этом роде.ActiveRecord + EventMachine + Postgres + Sinatra

ответ

1

ActiveRecord имеет промежуточное ПО ActiveRecord::ConnectionAdapters::ConnectionManagement, которое правильно закрывает соединения после запроса. Вы можете активировать его в config.ru (я предполагаю, что вы запустите приложение Sinatra с файлом config.ru.Если вы не знакомы с использованием Sinatra с config.ru, об этом в документах есть someinformation). Поместите эту строку ниже require ... и выше run ...:

use ActiveRecord::ConnectionAdapters::ConnectionManagement 
+0

Как именно использовать? Я просто помещаю эту строку в config.ru? –

+0

@hatboysam, пожалуйста, прочитайте обновленный ответ. –

Смежные вопросы