這是Rails 2.3.10和Ruby 1.8。Rails 2.3:在執行after_filter之前立即重定向
我有一些代碼,看起來大致是這樣的:
class RedirectingController
after_filter :do_something_long, :only => [:show]
def show
redirect_to "http://www.google.com"
end
def do_something_long
sleep 60
logger.debug("Something long has completed")
end
end
現在我的問題是,即使我在重定向已被執行的日誌中看到,它等待,直到睡眠60前完成重定向實際上發生了。有沒有辦法讓重定向發送到瀏覽器,然後運行do_something_long。作爲一個附註,我試圖避免使用諸如delayed_job或resque之類的東西。
我給一些背景:這是被擊中會通過一個非常大的用戶量被擊中的動作。所有的動作都是重定向(想一想粗略的比喻),但是有一些計算需要發生,我不想增加重定向的時間,最多隻需要0.5s。 – Mike
好的。是否有一個令人信服的理由,您可以使用延遲工作?這似乎是一個相當不錯的用例。他們開始行動,你開始耽誤工作,而且他們快速閃電。 – Msencenb
如果我不得不使用delayed_job,我會這樣做,但是與僅刷新輸出,重定向瀏覽器,然後執行計算相比,這看起來會有很大的開銷。我也擔心數據庫中寫入delayed_job的數據量會在數據庫中創建可能會影響網站的其他部分。 – Mike