我的应用程序的设置方式是我们使用不同的环境为每个子域使用不同的数据库连接。延迟作业完成了您所期望的(我猜),并在将作业插入其delayed_jobs表时使用该请求的当前环境(以及数据库连接)。
问题是DJ无法处理来自所有这些不同表格的作业,所以我试图强迫DJ只使用一个数据库,特别是设置它。我已经尝试了this,但它不起作用,我不知道下一步该尝试什么。
任何指针/建议都会非常感激,真的以我的智慧结束。
尝试过的代码:
Delayed::Job.class_eval do
establish_connection ActiveRecord::Base.configurations["delayed_job"]
end
与数据库的连接是在before_filter
的{{1}}内完成的。
答案 0 :(得分:1)
ApplicationController中用于建立每个域的连接的代码将仅在每个请求的应用程序服务器中发生。
将一个:domain属性添加到Job类,并在排队作业时设置它。在Job#perform中,建立数据库连接。