BackgrounDRbを使ってControllerのメソッドを呼び出す方法
Posted under: [Tips] | 5月 8th, 2008
が、いまいち分からなかったりします。やりたいことはApplicationController内に定義してある関数を呼び出す処理。BackgrounDRbの中で、expire_pageを呼び出したい時もあると思うので。キャッシュの生成処理をBackgrounDRb内でやらせるのは高速化につながるのではないかと思います。そうすると、キャッシュの生成にかかるコストをバッググラウンドでやらせつつ、表示が高速化できるようになります。
妥協的な方法は以下。
How to Execute a Rails Controller Action via. Cron [ Mr. Matt ]を参考にすると、以下のようになります。
class FunctionWorker < BackgrounDRb::Rails
def do_work(args)
: # 何かの処理
app = ActionController::Integration::Session.new
posts.each { |some|
app.get "some_controller/some_method/#{some.id}"
}
end
こうすると普通にコントローラーが利用できるようになります。やっていることはHTTPアクセスと変わらないので、どうしてもという時だけになるでしょうが。