在rails上更新数据库每月ruby?

时间:2016-07-21 07:31:27

标签: ruby-on-rails database

我有一张桌子" Point"使用整数列" monthly_point"和表"用户"使用整数列" Give_Point"。我想更新" Give_Point"的值是" monthly_point"的价值每个月。我怎样才能做到这一点?谢谢大家。

2 个答案:

答案 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

查看config / schedule.rb转换为cron语法

bundle exec whenever

Whenever Gem