首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5调度程序每天更新一次数据库

Rails 5调度程序每天更新一次数据库
EN

Stack Overflow用户
提问于 2016-12-06 11:44:43
回答 1查看 1.9K关注 0票数 2

我是rails新手,我想每天午夜运行一次批处理文件/调度任务,检查哪些条目过期了。表中的每个记录都有一个closing_date,在此之后,这些记录必须是非活动的。(状态active=false在DB上)。因此,基本上,它将运行2个SQL查询来获取所有记录,然后将另一个字段标记为非活动字段,用于过期的记录,我正在使用Rails 5。

我应该如何去做这个-创业板(rufus,无论如何,时钟工作或任何其他创业板)或简单的一些系统工具的cronjob?我要改变我的数据库为PostgreSQL,所以这会影响吗?任何建议或示例代码,任何人都可以分享,以获得一个想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 12:15:10

简单地说:您可以为此目的使用每当宝石

您需要创建一个rake任务,以便在其中编写SQL。然后在任何时候使用cron作业来调度它。

详细解释

第一步是创建一个rake任务。您可以使用控制台执行此操作。

代码语言:javascript
复制
rails g task my_namespace my_task1 

这将在my_namespace.rake文件夹中创建一个名为lib/tasks的文件,其初始内容如下

代码语言:javascript
复制
namespace :my_namespace do
  desc "TODO"
  task task1: :environment do
    # Your code will go here
  end

end

通过运行,可以检查任务是否正常运行。

代码语言:javascript
复制
rake my_namespace:task1 

在控制台里。

现在,您需要使用whenever gem来调度作业。

  1. gem 'whenever', :require => false in Gemfile.
  2. 运行bundle install
  3. 在终端中运行wheneverize命令。这将在config文件夹中创建一个schedule.rb文件。
  4. 添加以下代码来调度rake任务: 每天1点,晚上8点做"my_namespace:task1“结束
  5. 运行以下命令:whenever --update-crontab。如果您的环境是开发的,请使用命令:whenever --update-crontab --set environment='development' (参见这个问题 )。
  6. 运行crontab -l以检查是否添加了cron作业。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40994581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档