2016-07-21 3 views
0

私は、整数列 "monthly_point"を持つテーブル "Point"と、整数列 "Give_Point"を持つテーブル "User"を持っています。私は毎月 "monthly_point"の値である "Give_Point"の値を更新したい。どうやってやるの?皆さんありがとう。データベースを毎月更新する?

+1

を見てみましょう - https://github.com/javan/whenever – Sebin

答えて

0

sidetiq

と呼ばれるこのようなタスクのための宝石は、それがバックグラウンドジョブのsidekiqを使用していますがあります。

は、ここでは一例

class MonthlyPointWorker 
    include Sidekiq::Worker 
    include Sidetiq::Schedulable 

    recurrence { monthly } 

    def perform 
    # do your work here 
    end 
end 

Wheneverだけのcrontabにあなたのタスクを置くとcronを使用してそれを実行しています。

あなたのニーズに合わせて使い分けるのはあなた次第です。

0

あなたは自分のGemfileにgem 'whenever', require: falseを追加し、bundle installを実行whenever gem を使用するので、これを達成するためにcron-jobsを使用する必要があります。 はその後、アプリケーションのルートディレクトリ内には、次のコマンドを実行します。

`bundle exec wheneverize` 

これはあなたのconfigフォルダ(config/schedule.rb)にスケジュールファイルが追加されます。このファイルでは、スケジュールされたタスクを設定します。通常のcronスケジューリングを使用するか、スケジューリングにもっと慣れ親しんだDSLを使用できます。次の例では、宝石のREADME.mdから取っています

every 3.hours do 
    runner "MyModel.some_process" 
    rake "my:rake:task" 
    command "/usr/bin/my_great_command" 
end 

every 1.day, :at => '4:30 am' do 
    runner "MyModel.task_to_run_at_four_thirty_in_the_morning" 
end 

every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot 
    runner "SomeModel.ladeeda" 
end 

every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday 
    runner "Task.do_something_great" 
end 

every '0 0 27-31 * *' do 
    command "echo 'you can use raw cron syntax too'" 
end` 

あなたがconfig/schedule.rbであなたのスケジュールされたタスクを設定したら、あなたはまだあなたのcrontabにそれらを適用する必要があります。あなたのターミナルから、いつでもコマンドを使用してcrontabを更新してください:

アプリケーションのディレクトリに変更してください。/schedule.rb

cd /my/app

ビューの設定は、構文にcronに変換

bundle exec whenever

Whenever Gem

関連する問題