gpt4 book ai didi

ruby-on-rails - 在 rails 3 中为 delayed_job 更改后端 ActiveRecord 数据库

转载 作者:行者123 更新时间:2023-11-29 12:22:38 24 4
gpt4 key购买 nike

我正在努力将 Rails 应用程序从 2.3.11 升级到 3.0(然后最终升级到 3.1),并将我的 delayed_job gem 从 2.0.4 更改为 2.1.4。

我的 postgres 数据库中已经有一个 delayed_jobs 表,但它与我的 Rails 应用程序的默认表位于不同的数据库中。例如,在开发模式下,我使用“development”数据库,但我的一些关系,包括 delayed_jobs 位于“development_stats”数据库中。使用此数据库的其他模型可以正常访问它。

在我的 config/initializers/delayed_job.rb 中,对于 delayed_job 2.0.4:

Delayed::Worker.backend = :active_record
Delayed::Worker.destroy_failed_jobs = false

class Delayed::Job
establish_connection Rails.configuration.database_configuration["#{Rails.env}_stats"]
end

现在,当我尝试使用 delayed_job 时遇到这些错误:

ActiveRecord::StatementInvalid: PGError: ERROR:  relation "delayed_jobs" does not exist 
LINE 1: DELETE FROM "delayed_jobs"

NoMethodError: undefined method `name' for nil:NilClass
~/.rvm/gems/ruby-1.9.2-p290/gems/arel-2.0.10/lib/arel/visitors/to_sql.rb:56:in `block in visit_Arel_Nodes_InsertStatement'

从我读过的其他内容来看,Delayed::Job 模型现在在加载 gem 时加载,因此在初始化程序中更改数据库为时已晚。有没有其他人遇到过这个问题并能够找到一种方法来告诉 delayed_job 使用不同的数据库?

在此先感谢您能给我的任何帮助...

最佳答案

这可能会有所帮助,当更改 delayed_job 表的“名称”时,我发现我需要强制 Rails 为模型重置关联的数据库模式,如下所示:

延迟::后端::ActiveRecord::Job.set_table_name ''延迟::后端::ActiveRecord::Job.reset_column_information

关于ruby-on-rails - 在 rails 3 中为 delayed_job 更改后端 ActiveRecord 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302667/

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