Проблема с потоками в Druby и ActiveRecord - PullRequest
2 голосов
/ 09 февраля 2009

У меня есть приложение rails и отдельный процесс друби. Этот процесс дает мне несколько методов, и в первой строке каждого метода друби есть вызов ActiveRecord :: Base.establish_connection, где db_name зависит от параметра, установленного приложением rails. Иногда процесс получает неправильное имя базы данных, и я думаю, что это может быть проблемой параллелизма. Может ли это быть? Любая идея о том, как сделать это потокобезопасным?

Спасибо за любую помощь! Roberto

1 Ответ

0 голосов
/ 15 мая 2009

Да, это проблема параллелизма.

Чтобы это исправить, вам придется немного изменить архитектуру, но у меня недостаточно информации.

  • Является ли код, работающий в бэкэнде, тем же, что и код в вашем приложении rails?
  • Используют ли разные базы данных одну и ту же модель?
  • Сколько у вас разных баз данных? Растет ли это число?

По сути, если у вас небольшое и фиксированное количество баз данных, самое простое - использовать разные процессы ruby.

Если у вас разные базы данных с разными моделями, вы можете использовать разные базовые классы:

AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA

AppB < ActiveRecord::Base
Model3 < AppB

Тогда вы можете позвонить

AppA.establish_connection(...)
AppB.establish_connection(...)

в разные базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...