最近工作需要用到定时任务。原来写java的时候也用到过类似的Scheduler的功能。

Ruby语言中也有同样功能的工具。rufus-scheduler。下面介绍一下rufus-scheduler。

   定义:  a Ruby gem for scheduling pieces of code (jobs). It understands running a job AT a certain time, IN a certain time, EVERY x time or simply via a CRON statement.

安装:gem install rufus-scheduler(gem安装是前提,再次不多言)

使用:rufus-scheduler可以指定在特定时间时执行,在从此刻开始间隔多长时间执行,在特定时间间隔内循执行,在特定的cron时间执行。例子如下:

1:指定特定时间(或者超过指定时间)执行

 require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.at '2013-10-25 08:39:36 -0700' do
puts Time.new
puts 'Time is up'
puts 'order pizza'
end
scheduler.join

输出结果:

 2013-10-25 08:38:09 -0700
process begin----
2013-10-25 08:39:36 -0700
Time is up
order pizza

如果设置的at时间在程序运行之前,比如设置的at时间为:2013-10-25 08:39:36。程序运行时的时间为2013-10-25 08:34:36。那么程序运行时候就执行设置的事件

举个例子:

 require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.at '2013-10-25 08:39:36 -0700' do
puts Time.new
puts 'Time is up'
puts 'order pizza'
end
scheduler.join

输出结果:

 2013-10-25 08:45:53 -0700
process begin----
2013-10-25 08:45:53 -0700
Time is up
order pizza

 2:在从此刻开始间隔多长时间执行

   

 require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
scheduler.in '1s' do
puts Time.new
puts 'Hello...Word'
end
scheduler.join

输出结果:

 2013-10-25 02:56:02 -0700
2013-10-25 02:56:03 -0700
Hello... Word

3:在特定时间间隔内执行

 require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
scheduler.every '1s' do
puts Time.new
puts 'Hello... Word'
end
scheduler.join

输出结果:

 2013-10-25 03:05:38 -0700
2013-10-25 03:05:39 -0700
Hello... Word
2013-10-25 03:05:41 -0700
Hello... Word
2013-10-25 03:05:42 -0700
Hello... Word
2013-10-25 03:05:43 -0700
Hello... Word
2013-10-25 03:05:44 -0700
Hello... Word

4:在特定的cron时间执行

 require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.cron '/1 * * * *' do
puts Time.new
puts 'Hello word'
end
scheduler.join

输出结果:

 2013-10-25 08:57:46 -0700
process begin----
2013-10-25 08:58:00 -0700
Hello word
2013-10-25 08:59:00 -0700
Hello word
2013-10-25 09:00:00 -0700
Hello word
2013-10-25 09:01:00 -0700
Hello word
2013-10-25 09:02:00 -0700
Hello word
2013-10-25 09:03:00 -0700
Hello word

至于cron的使用方法,请参考cron相关文章。

此文只是Ruby定时任务的初步,在下一篇中和大家一起进入深一步的分析。

Ruby 定时任务之一(初步尝试)的更多相关文章

  1. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

  2. 用R进行微博分析的初步尝试

    新浪微博如火如荼,基于微博的各种应用也层出不穷. 有一种共识似乎是:微博数据蕴含着丰富的信息,加以适当的挖掘.可以实现众多商业应用.恰好社会网络分析也是我之前有所了解并持续学习的一个领域,因此我做了微 ...

  3. OSX 上初步尝试 asp.net 5

    去年微软最令开源狗界振奋的消息就是 ASP.NET 的开放与开源这一消息了. 根据微软的介绍,与我之前的一些总结,可以看到 ASP.NET 以及 .NET 平台会有下面几个变化: 代码使用 Apach ...

  4. 对quartz定时任务的初步认识

    已经好久没有写技术博文了,今天就谈一谈我前两天自学的quartz定时任务吧,我对quartz定时任务的理解,就是可以设定一个时间,然后呢,在这个时间到的时候,去执行业务逻辑,这是我的简单理解,接下来看 ...

  5. nginx初步尝试

    导师要我学习下nginx,弄个简单的负载均衡出来,具体就是请求发送到nginx上,然后nginx将请求转发到后面的两个jetty应用上,这两个应用的代码是一样的,只是监听的端口不同,由于是简单尝试,因 ...

  6. 【阿里云产品公测】性能测试服务PTS的初步尝试

        性能测试服务PTS,对于像我这样对测试毫无概念的新手来说,这服务真的太好了,使用简单,官方教程又明细,连我这样的新手一看都明白了怎样使用. _%GGl$kH   下面是我来简单尝试一下,更多功 ...

  7. 学习DDD的初步尝试,从最基础的开始,业务介绍,划分限界上下文 ,建立模型

    Conference业务简介 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的用户有两类: 1:客户,可以创建和管理会议. 2:会议座位预定者,可以预订会 ...

  8. 【TensorFlow探索之一】MNIST的初步尝试

    最近在学习TensorFlow,尝试的第一个项目是MNIST.首先给出源码地址. 1 数据集的获取 我们可以直接运行下面的代码,来获取到MNIST的数据集. from tensorflow.examp ...

  9. Unreal Engine 4 蓝图完全学习教程(二)—— 初步尝试

    本篇尝试使用蓝图.蓝图是使用专门的编辑器进行编程. Ⅰ.3类蓝图 ①关卡蓝图:前面提到过,关卡是指在UE中制成的游戏场景.关卡蓝图是用于制作当前游戏场景的程序.在UE中进行编程就是在创建关卡蓝图. ② ...

随机推荐

  1. IOS开发学习笔记023-UIToolBar的使用

    这里使用代码实现 大概过程: 1.创建工具条 2.创建插入条 3.添加头像.标签.删除按钮 4.点击头像获取标签信息 做一个简单的联系人列表,可以添加删除联系人,现在还没有添加头像和文字,接下来慢慢添 ...

  2. ogre3D学习基础12 --- 让机器人动起来(移动模型动画)

    学了那么长时间,才学会跑起来.My Ogre,动起来. 第一,还是要把框架搭起来,这里我们用到双端队列deque,前面已经简单介绍过,头文件如下: #include "ExampleAppl ...

  3. Python+Selenium练习篇之13-获取当前页面的URL

    本文介绍如何通过webdriver方法获取当前测试页面的URL.获取当前URL有什么用处呢,一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分 ...

  4. Python-S9-Day125-Web微信&爬虫框架之scrapy

    01 今日内容概要 02 内容回顾:爬虫 03 内容回顾:网络和并发编程 04 Web微信之获取联系人列表 05 Web微信之发送消息 06 为什么request.POST拿不到数据 07 到底使用j ...

  5. github 上传项目

    注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...

  6. 误删除pycharm项目中的文件,如何恢复?

    如果写代码的时候,不小心删除来某个文件夹或者文件,而且删除后回收站也找不到, 可以使用如下方法恢复: 选择 Local History -> Show History : 选中需要reset到的 ...

  7. pythonic编程示例及简析

    1.列表 list[起始:结尾:增量] 值传递与地址传递 a = [2,1] b = a #地址传递 b = a[:] 值传递 a.sort() print a #[1,2] print b #[1, ...

  8. stdlib.h中自带的两个算法qsort,bsearch

    http://zh.cppreference.com/w/c/algorithm ========== void qsort( void *ptr, size_t count, size_t size ...

  9. Tomcat源码分析(二)------ 一次完整请求的里里外外

    Tomcat源码分析(二)------ 一次完整请求的里里外外   前几天分析了一下Tomcat的架构和启动过程,今天开始研究它的运转机制.Tomcat最本质就是个能运行JSP/Servlet的Web ...

  10. Kotlin-Not enough information to infer parameter T in fun<T:View> findViewById(id: Int): T!

    代码改变世界 错误: Type inference failed : Not enough information to infer parameter T in fun<T:View> ...