2011-12-16 8 views
2

開始日と終了日が現在の範囲内になければならないという条件で、選択した日付範囲(開始日と終了日)に基づいてサイト使用状況のレポートを生成するコントローラで、四半期。バックグラウンドジョブで生成されたファイルをダウンロードできるようにする

このレポートを各四半期の終わりに生成し、ビューページのリンクとしてダウンロードできるようにするbackground jobを実装したいと考えています。

各四半期は3か月間ですので、たとえば - March 31st 11:59 PMには、1月1日から3月31日までのサイト使用状況レポートを生成して、ビューページでダウンロードできるようにします。

可能な限りwhenever gemを使用することをお勧めします。これは、一定の間隔でモデルを再インデックスするために既に使用しているためです。すべての可能な提案が歓迎される!!

どうすればこのように手伝ってください!

答えて

2

私は、バックグラウンドジョブを作成する複数のキューにそれらを配置し、それらを処理するために宝石DelayedJob(Railsの2.1 3.0+)またはResqueをお勧めします後で。両方のために良いRailscastsがあります。

1

ReportGeneratorクラスを追加し、それをrails runnerで使用できます。このクラスは、日付範囲を計算し、レポートを生成し、アプリケーションの公開ディレクトリに保存します。あなたは、誰でも誰でもアクセス可能であることに注意する必要があります。このファイルにアクセスする権限がない場合は、例えばunpublicのような別のディレクトリに置いて、Apache用のX-Sendfile httpヘッダーを使ってアプリケーション(認証目的)を介して提供することができます。あなたが持っているQUATER認識については

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

助けてくれてありがとう...私はコントローラとビューを持っているレポートモデルがありません。コントローラでは、メソッドは2つの日付を受け取り、送信時にウィンドウにダウンロードするxlsレポートを生成するメソッドを定義しています。どのように私はあなたが言った方法でこれを背景として取得することができます..あなたはこれにいくつかの光を提供することができますか? –

+0

レポートモデルについては触れませんでした。 1つの違いを持つコントローラアクションと同じになるActiveRecordを持たないRubyクラスです。あなたは明示的に日付範囲を渡すのではなく、quater nunberだけを渡します。あなたは3ヶ月ごとのようなものを追加します。{runner "ReportGenerator.new(:quater => Date.today.month/3).generate"} – Sebastian

+0

:ありがとう。 –