我是rails新手,我想每天午夜运行一次批处理文件/调度任务,检查哪些条目过期了。表中的每个记录都有一个closing_date,在此之后,这些记录必须是非活动的。(状态active=false在DB上)。因此,基本上,它将运行2个SQL查询来获取所有记录,然后将另一个字段标记为非活动字段,用于过期的记录,我正在使用Rails 5。
我应该如何去做这个-创业板(rufus,无论如何,时钟工作或任何其他创业板)或简单的一些系统工具的cronjob?我要改变我的数据库为PostgreSQL,所以这会影响吗?任何建议或示例代码,任何人都可以分享,以获得一个想法。
发布于 2016-12-06 12:15:10
简单地说:您可以为此目的使用每当宝石。
您需要创建一个rake任务,以便在其中编写SQL。然后在任何时候使用cron作业来调度它。
详细解释
第一步是创建一个rake任务。您可以使用控制台执行此操作。
rails g task my_namespace my_task1 这将在my_namespace.rake文件夹中创建一个名为lib/tasks的文件,其初始内容如下
namespace :my_namespace do
desc "TODO"
task task1: :environment do
# Your code will go here
end
end通过运行,可以检查任务是否正常运行。
rake my_namespace:task1 在控制台里。
现在,您需要使用whenever gem来调度作业。
gem 'whenever', :require => false in Gemfile.bundle installwheneverize命令。这将在config文件夹中创建一个schedule.rb文件。whenever --update-crontab。如果您的环境是开发的,请使用命令:whenever --update-crontab --set environment='development' (参见这个问题 )。crontab -l以检查是否添加了cron作业。https://stackoverflow.com/questions/40994581
复制相似问题