Gem 尝试 delayed_job 使用独立数据库之后,script/delayed_job start 无反应,并且报错提示找不到对象

algo31031 · 2013年06月23日 · 最后由 algo31031 回复于 2013年06月24日 · 3199 次阅读

项目需要把 delayed_job 数据库独立出来,创建完新数据库之后,运行RAILS_ENV=production script/delayed_job start无反应,新的 DJ 数据库里能加进去数据,RAILS_ENV=production rake jobs:work能运行,但是会报错说找不到对象,卡了一晚上,谁能帮我看下是哪里写的不对,不胜感激,具体代码如下:

config/initializers/delayed_job_config.rb

Delayed::Job.class_eval do
  establish_connection ActiveRecord::Base.configurations["delayed_job"]
end

database.yml

delayed_job:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: delayed_job
  pool: 5
  username: root
  password: "987654"
  host: localhost

my_job.rb

class MyJob < Struct.new(:episode)
  def perform 
    episode.do_something
  end
end

DJ 的报错信息提示说找不到 episodeCouldn't find Episode with id=1

估计应该是在你配置的 job 数据库中找记录了

#1 楼 @uudui 很有可能,但我只把 Delayed::Job 指定了单独的数据库,其他 model 没用 establish_connection 呢。而且新添加的 job 一创建完就会抛找不到对象的错误。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号