2016-11-11 53 views
0

我在Rails应用程序5使用mongoid旁边的PostgreSQL PostgreSQL的表。Resque看到mongoid模型,但不

我resque工作与mongoid模型很好地工作,但是,当我尝试使用我的PostgreSQL的表的一个工作里,我得到以下错误:

PG::UndefinedTable: ERROR: relation "admins" does not exist LINE 1: SELECT "admins".* FROM "admins"^: SELECT "admins".* FROM "admins" 

这是我的lib /任务/ resque.rake文件

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
    Resque.before_fork do 
    defined?(ActiveRecord::Base) and 
     ActiveRecord::Base.connection.disconnect! 
    end 

    Resque.after_fork do 
    defined?(ActiveRecord::Base) and 
     ActiveRecord::Base.establish_connection 
    end 
end 

提到的postgres表确实存在,并且与rails应用程序完美配合。这似乎是,至少主要的Rails应用程序之外,ActiveRecord的默认使用mongoid,所以我的PostgreSQL模型没有一个是工人内部可见。或者可能不是。

我错过了什么吗?

回答

0

我最终通过调整我的Procfile和任务文件有点修复它,这个问题是由于resque没有拿起合适的环境(因此不确定模型关系)

Procfile

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development} 
worker: bundle exec rake resque:pool 

我结束了使用lib/tasks/resque.rake只是申报工作,并搬到初始化代码lib/tasks/resque-pool.rake。基本上resque:setupresque:pool:setup之前调用,它预装了池管理器Rails环境。

require 'resque/tasks' 
require 'resque/pool/tasks' 

task "resque:setup" => :environment do 
    Resque.before_fork = Proc.new do 
     ActiveRecord::Base.connection.disconnect! 
    end 
    Resque.after_fork = Proc.new do 
     ActiveRecord::Base.establish_connection 
    end 
end 

task "resque:pool:setup" do 

end