美文网首页
rails中实现定时任务的之whenever

rails中实现定时任务的之whenever

作者: limx | 来源:发表于2016-07-18 14:33 被阅读0次

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

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

    进入项目文件夹: cdwhenever_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了。

    相关文章

      网友评论

          本文标题:rails中实现定时任务的之whenever

          本文链接:https://www.haomeiwen.com/subject/euwpjttx.html