Принудително забавено задание да използва отделна DB връзка

Приложението ми е настроено по такъв начин, че използваме различна връзка с база данни за всеки поддомейн, използвайки различни среди. Отложената работа прави това, което бихте очаквали (предполагам) и използва текущата среда на тази заявка (и следователно DB връзка), когато вмъква задачата в нейната таблица delayed_jobs.

Проблемът е, че DJ не може да обработва задачи от всички тези различни таблици, така че се опитвам да принудя DJ да използва само една база данни, специално настроена за нея. Опитах това< /strong> но просто няма да работи и нямам идея какво да опитам след това.

Всякакви насоки/предложения ще бъдат МНОГО оценени, наистина според мен акълът ми приключва с това.

Опит за код:

Delayed::Job.class_eval do
  establish_connection ActiveRecord::Base.configurations["delayed_job"]
end

Връзката към DB се извършва в before_filter в ApplicationController.


person Mike Campbell    schedule 14.12.2012    source източник
comment
Можете ли да опишете по-подробно вашата среда? т.е. колко уеб сървъра, сървъри за забавени задания, как присвоявате DB във всеки и покажете кода за установяване на връзка.   -  person aceofspades    schedule 14.12.2012
comment
1 уеб сървър, 1 приложение, 1 сървър за забавени задачи. Връзката към DB се извършва в before_filter в контролера на приложението.   -  person Mike Campbell    schedule 15.12.2012
comment
възможен дубликат на Как мога да принудя delayed_job да използвате конкретна db връзка?   -  person Mike Campbell    schedule 17.12.2012


Отговори (1)


Кодът в ApplicationController за установяване на връзка за домейн ще се случи само във вашия сървър за приложения при всяка заявка.

Добавете атрибут :domain към вашия клас Job и го задайте, когато поставите заданието на опашка. В Job#perform установете вашата DB връзка.

person aceofspades    schedule 15.12.2012
comment
Отговорихте на нещо, което не беше точно това, което питах, но все пак заслужава гласуване. Направих ученическа грешка и кодът във въпроса ми всъщност работи. Поисках въпросът да е затворен. - person Mike Campbell; 17.12.2012