2012-09-26 24 views
0

我試圖幫助非技術用戶運行特定的rails rake任務,並能夠在瀏覽器中看到rake任務的結果。從視圖運行Rails rake任務並在視圖中生成rake任務結果?

下面是我的rake任務代碼:

namespace :partner do 

    task :report => :environment do 
    csv_output = Partner.generate_report 
    csv_output.split("\n").each {|row| puts row} 
    end 

    task :sample_report => :environment do 
    csv_output = Partner.generate_report(30) 
    csv_output.split("\n").each {|row| puts row} 
    end 
end 

目前我只運行rake合作伙伴:報告和一組數據顯示了在終端,但我想爲他們能夠按一個按鈕查看頁面,運行rake任務,然後直接在視圖中查看結果。

任何意見或建議都將非常令人高興。

+0

需要多長時間任務的運行? –

+0

大約需要20分鐘,並在終端內掃描CSV。 – edweezy

回答

0

您可能想要爲此目的尋找一個後臺任務寶石。

看一看到這些:

https://github.com/defunkt/resque

http://mperham.github.com/sidekiq/

https://github.com/collectiveidea/delayed_job

+0

感謝您的迴應。我認爲resque和延遲工作對於在後臺運行任務來說非常棒,但是我試圖完成的是運行上述任務rake partner:在View中生成報告,然後在另一個View頁面中輸出結果。只能在終端內運行該任務,並輸出終端中的所有CSV報告任何想法? – edweezy

+0

我的想法是將rake任務轉換爲後臺作業,而不是打印到終端,而是用類似faye的方式將其推送給客戶端。好吧,你不需要使用這些,但我認爲你必須改變任務,以便它返回一些東西,而不是打印。 –

+0

好吧,所以我實際上能夠直接在我的控制器索引操作中運行rake任務: m想知道如何在我的View index.html.erb頁面中打印結果,而不是在終端def index 中顯示爲CSV的報告t = system('rake partner:report') 把耙:: Task.task_defined?(「耙夥伴:報告」) puts t.inspect() – edweezy