2016-11-11 59 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