我正在将rails应用程序从2.3.11升级到3.0(最终为3.1),并将我的delayed_job gem从2.0.4更改为2.1.4。在rails 3中更改后端ActiveRecord数据库用于delayed_job 3
我的postgres数据库中已经有一个delayed_jobs表,但它与我的rails应用程序的默认值不同。例如,在开发模式下,我使用'development'db,但是我的一些关系,包括delayed_jobs,位于'development_stats'db。其他使用这个数据库的模型可以很好地访问它。
在我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'
从我读过的其他东西看来,当宝石变成loa时,Delayed :: Job模型会被加载ded,所以在初始化器中更改db已经太晚了。有没有人遇到这个问题,并能找到一种方法来告诉delayed_job使用不同的数据库?
预先感谢任何帮助,您可以给我...