postgresqlのパブリックスキーマに対して完全に実行される遅延ジョブがあります。
ただし、私の操作のほとんどは、他のスキーマ(クライアントごとに1つ)に対して行われます。
さまざまなスキーマを処理するために、指示に従い、before_filter(アプリケーションコントローラー内)に検索パスを切り替えるコードを配置しました。
私が気づきました。before_filterのコードは、通常の操作では完全に呼び出されますが、遅延ジョブではまったく呼び出されません。
私は、入り口を示すために、私が考えることができる最も単純なものを除いて、すべてをトリミングしてトリミングしました。
class ApplicationController < ActionController::Base
protect_from_forgery
def write_to_log(text)
File.open('c:\temp.txt', 'ab') do |f|
f.write text + "\r\n"
f.close
end
end
before_filter :on_before_filter
def on_before_filter
write_to_log('hey dave');
return if(use_token() == false);
set_active_schema if(goto_log_in? == false);
end
ワーカークラスのコード
def run_job(id)
upload = Upload.find(id)
upload.run_job();
end
handle_asynchronously :run_job, :priority => 10, :queue => 'public'
かなり標準的なものですか?ジョブ内のコードは実行されますが、before_filterコードは呼び出されません。
だから私の質問はです。私は何か間違ったことをしましたか?またはもっと重要なことに、どうすれば正しいことをすることができますか?