2011-12-16 98 views
2

我在我的控制器中有一個動作,根據所選日期範圍(開始和結束日期)生成站點使用情況報告,條件是開始日期和結束日期必須在當前25美分硬幣。使後臺作業生成的文件可用於下載

我想要實現一個background job,它將在每個季度結束時生成此報告,並將其作爲鏈接下載到視圖頁面上。

每季度3個月,因此,例如 - 在March 31st 11:59 PM,我想它生成網站的使用情況,從1月1日至3月31日的報告,並使其可用於下載在視圖頁面。

如果可能的話,我更喜歡使用whenever gem,因爲我已經使用它以確定的時間間隔對模型進行重新索引。歡迎所有可能的建議!

請幫助我如何去做這個!

回答

2

我會建議寶石DelayedJob(2.1爲Rails 3.0+)或Resque創建後臺作業,將它們放在多個隊列,並處理它們後來。兩者都有很好的Railscasts。

1

您可以添加ReportGenerator類並在rails runner中使用它。本課程將計算日期範圍,生成報告並保存在您的申請的公開指導下。你必須注意到,任何人都可以訪問公共目錄中的每個文件。如果你不想授權訪問這個文件,你可以放入其他目錄 - 例如unublic,並通過你的應用程序(auth目的)使用Apache的X-Sendfile http頭來提供它。

ReportGenerator.new(:quater => 4).generate 

對於承認你有四:

quaters => { 
    1 => "definition of 1st quater (date ranges)", 
    2 => "definition of 2nd quater (date ranges)", 
    3 => "definition of 3rd quater (date ranges)", 
    4 => "definition of 4th quater (date ranges)". 
} 
quater = Date.today.month/3 
+0

感謝您的幫助...我有一個報告模型,我有一個控制器和視圖。並在控制器中我已經定義了一個方法,接受兩個日期,並在提交時生成一個xls報告供下載。我如何能夠以你提到的方式把它作爲背景來進行......你能否提供一些啓示? – 2011-12-16 09:02:57