我有一张桌子" Point"使用整数列" monthly_point"和表"用户"使用整数列" Give_Point"。我想更新" Give_Point"的值是" monthly_point"的价值每个月。我怎样才能做到这一点?谢谢大家。
答案 0 :(得分:0)
这类任务有一个宝石,名为sidetiq
它使用sidekiq作为后台工作。
这是一个例子
class MonthlyPointWorker
include Sidekiq::Worker
include Sidetiq::Schedulable
recurrence { monthly }
def perform
# do your work here
end
end
Whenever只需将您的任务放入crontab并使用cron执行它。
由您决定使用哪一个。
答案 1 :(得分:0)
您应该使用cron-jobs
来实现这一目标,使用whenever gem
只需将gem 'whenever', require: false
添加到您的Gemfile并运行bundle install
即可。
然后在应用程序的根目录中运行以下命令:
`bundle exec wheneverize`
这会将计划文件添加到配置文件夹(config/schedule.rb)
。您可以在此文件中设置计划任务。您可以使用常规的cron调度,也可以使用更惯用的DSL进行调度。以下示例来自gem的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。在终端上,使用when命令更新crontab:
cd /my/app
bundle exec whenever