2016-12-11 9 views
0

私はYahoo Financeから財務データを取得する在庫ポートフォリオアプリを持っています。私は、ポートフォリオの価値を計算する機能を設定したいと考えています。これには、関連するすべての株価のyahooへのリクエストの送信と価格*数量の計算とポートフォリオオブジェクトの金額属性への保存が含まれます。私は、ポートフォリオの金額と日付を毎日保存する評価インスタンスを作成するために使用される評価モデル(ポートフォリオに所属する)を持っています。次に、ポートフォリオの評価をグラフにプロットして、株式ピックのパフォーマンスを追跡します。レールでタスクを実行するためのcronまたはResque gemの宝石がある場合はいつでも

私は1日の終わりにこれを1回だけ実行したいと思います。今のところ、私はいつもの宝石を使って仕事をスケジュールし、上記の行動を実行して価格を取って計算することを考えています。これは、Resqueのようなバックグラウンド処理フレームワークのための良いユースケースですか?

+0

この回答を参考に使用できます http://stackoverflow.com/questions/40994581/rails-5-scheduler-to-update-database-once-a-day/40995192#40995192 – abhi110892

答えて

0

タスクを完了する方法はたくさんあります。 1つ目は、レーキタスクを作成して1日に1回実行することです。スケジューリングのためにwhenever gemを使用することができます。 cronのスケジュールを記述するための便利な方法を提供します。

たびドキュメント:

がするたびに書き込みと 展開cronジョブのための明確な構文を提供Rubyの逸品です。タスクの

# We will run rake task every day at some time 
every :day, :at => '12:20am' do 
    rake 'calculate_averages' 
end 

例:

require 'rake' 

task :calculate_averages => :environment do 
    products = Product.all 

    products.each do |product| 
    puts "Calculating average rating for #{product.name}..." 
    product.update_attribute(:average_rating, product.reviews.average("rating")) 
    end 
end 

wheneverドキュメントを読んで起動するには、どのようにどのようにtasks #2を記述する方法rake tasks.を書き込みます。

関連する問題