gpt4 book ai didi

ruby-on-rails-3 - 如何强制delay_job使用特定的数据库连接?

转载 作者:行者123 更新时间:2023-12-04 05:26:15 27 4
gpt4 key购买 nike

我有一个Rails 3应用程序,该应用程序根据子域使用不同的数据库。我通过在ApplicationController中使用“Establishment_connection”来做到这一点。

现在,我正在尝试使用delay_job gem进行一些后台处理,但是它使用了当时处于事件状态的数据库连接。它正在连接到子域数据库。

我想强制它使用“通用”数据库。我已经为某些在模型中调用“Establishment_connection”的模型做到了这一点:

class Customer < ActiveRecord::Base
establish_connection ActiveRecord::Base.configurations["#{Rails.env}"]
...
end

知道我该怎么做吗?

最佳答案

这是您需要知道的。在您的应用程序中包含DelayedJob gem时,您将为其创建迁移以创建存储作业的表,但不会创建模型。这是因为DelayedJob已经在gem中包含了一个模型(即Delayed::Job)。您需要做的是对该模型进行少许修补,就像您对自己的模型所做的一样。您可以在初始化程序中执行此操作。

您可能已经有一个初始化程序来配置DelayedJob,如果可以的话,您可以在其中进行配置,如果不需要,则可以创建一个。因此,如果您没有初始化器,请创建它(在config/initializers中),我们将其称为delayed_job_config.rb,现在在其中添加以下内容:

Delayed::Job.class_eval do
establish_connection ActiveRecord::Base.configurations["#{Rails.env}"]
end

我们对DelayedJob模型所做的工作与您对自己的模型所做的相同。现在,DelayedJob将使用该连接将作业放入数据库中。

关于ruby-on-rails-3 - 如何强制delay_job使用特定的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com