【发布时间】:2011-11-28 21:35:06
【问题描述】:
我正在努力将 rails 应用程序从 2.3.11 升级到 3.0(然后最终升级到 3.1),并将我的延迟作业 gem 从 2.0.4 更改为 2.1.4。
我的 postgres 数据库中已经有一个 delay_jobs 表,但它与我的 rails 应用程序的默认数据库不同。例如,在开发模式下,我使用“开发”数据库,但我的一些关系,包括延迟工作,位于“开发统计”数据库上。其他使用该数据库的模型可以正常访问。
在我的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 使用不同的数据库?
提前感谢您能给我的任何帮助...
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord delayed-job