• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Still_Walking

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

rails中实现定时任务的之whenever

rails中使用whenever做定时任务管理。

Whenever利用的是crontab,所以系统要支持crontab才可以使用它,它有清析的语法,可以和部署工具进行整合。

一、创建项目:rails new whenever_test --skip-bundle

  进入项目文件夹: cd whenever_test

  打开Gemfile文件:vim Gemfile

 

  把source 'https://rubygems.org'改为source 'https://ruby.taobao.org'。

 

  在文件里加入:

  gem 'whenever', :require => false

  group :development do
     gem 'mina'
  end

 

  然后运行:bundle install

二、使用whenever

  运行命令:wheneverize .

  这时它会生成一个config/schedule.rb文件,用vim打开该文件会有如下图的内容:

  在这个schedule.rb文件里添加一个定时任务:

  every :day, :at => '0:05am' do
    runner "Order.update_status"
  end

  意思是每天在0:05执行,用来更新订单的状态。(代码自己定义,这里不再一一介绍。whenever语法请参考: https://github.com/javan/whenever)

  运行命令:whenever

  这个命令是查看当前schedule.rb文件里写的定时任务,包含未同步到crontab file的任务,以crontab的格式显示。

  接下运行命令:whenever -i 或 whenever --update-crontab  把schedule.rb文件里的任务同步到crontab file。

  用命令crontab -l 查看守护进程里可以执行的任务。

三、mina整合

  把whenever整合进mina,关于mina的使用这里不再做介绍。直接进入整合说明。

  在config/deploy.rb文件里顶部加入  require 'mina/whenever'

  在部署任务里加入:

  task :deploy => :environment do
    deploy do  
      to :launch do
        invoke :'whenever:update'
      end
    end
  end

  这样在用mina deploy 部署的时候可以更新服务器的crontab file了。

posted on 2016-07-18 10:54  limanxian  阅读(1668)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3