Mea*_*ans 2 sqlite ruby-on-rails scheduler scheduled-tasks
我是 Rails 的新手,想每天在午夜运行一次批处理文件/计划任务,以检查哪些条目已过期。表中的每条记录都有一个closures_date,在此之后,此类记录必须处于非活动状态。(DB 上的状态为 active=false)。所以基本上它会运行 2 个 SQL 查询来获取所有记录,然后将另一个字段标记为对于过时的记录无效。我正在使用 Rails 5。
我应该如何处理这个gem(rufus,无论,发条或任何其他gem)还是只是一些用于cronjob的系统工具?我要将我的数据库更改为PostgreSQL,这会产生影响吗?任何人都可以分享任何建议或示例代码以获得想法。
小智 5
简而言之:您可以随时使用Gem来实现此目的。
您需要为将编写 SQL 的位置创建一个 rake 任务。然后使用任何时候将其安排为 cron 作业
详细说明
第一步是创建一个 rake 任务。您可以使用控制台执行此操作
rails g task my_namespace my_task1
Run Code Online (Sandbox Code Playgroud)
这将创建一个my_namespace.rake在lib/tasks文件夹中命名的文件,其初始内容如下
namespace :my_namespace do
desc "TODO"
task task1: :environment do
# Your code will go here
end
end
Run Code Online (Sandbox Code Playgroud)
您可以通过运行来检查您的任务是否正常运行
rake my_namespace:task1
Run Code Online (Sandbox Code Playgroud)
在控制台中。
现在您需要使用whenevergem安排作业。
gem 'whenever', :require => false在Gemfile。bundle installwheneverize在终端中运行命令。这将schedule.rb在 config 文件夹中创建一个文件。添加以下代码以安排您的 rake 任务:
every 1.day, at: '8:00 pm' do
rake "my_namespace:task1"
end
Run Code Online (Sandbox Code Playgroud)运行此命令:whenever --update-crontab。如果您的环境是开发环境,请使用命令:(whenever --update-crontab --set environment='development'请参阅此问题。
crontab -l以检查是否已添加 cron 作业。| 归档时间: |
|
| 查看次数: |
1561 次 |
| 最近记录: |