最近工作需要用到定时任务。原来写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. P3116 [USACO15JAN]会议时间Meeting Time

    P3116 [USACO15JAN]会议时间Meeting Time 题目描述 Bessie and her sister Elsie want to travel from the barn to ...

  2. Java多线程并发技术

    Java多线程并发技术 参考文献: http://blog.csdn.net/aboy123/article/details/38307539 http://blog.csdn.net/ghsau/a ...

  3. Android学习笔记之-----讯飞语音识别实例化RecognizerDialog参数出现错误的解决方法

    本人也是个小菜鸟,在做语音识别时也遇到了这个问题,空指针一直报错,app程序停止运行. 在网上搜了半天在这个帖子里找到了解决方法:http://bbs.xfyun.cn/forum.php?mo .. ...

  4. WEBs

    http://www.cnblogs.com/wupeiqi/articles/5341480.html 请求方式8种: 1.GET:请求指定页面信息,并返回实体 2.POST:向指定资源提交数据进行 ...

  5. JAVA后端常用框架SSM,redis,dubbo等

    JAVA后端常用框架SSM,redis,dubbo等   一.SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 spri ...

  6. Pipenv 学习笔记

    个人笔记,胡言乱语.并不是什么教学向文章.. 前言 在学习了 Python.Java 后,会发现 Java 有很成熟的项目构建工具,以前是使用 xml 的 Maven,现在又出现了使用 groovy ...

  7. [报错处理]Could not find a version that satisfies the requirement xml (from versions)

    安装xml库发生报错 pip3 install xml Collecting xml Could not find a version that satisfies the requirement x ...

  8. noip2018 pre——Dp

    Dp专题 1011: KC的瓷器 (porcelain) 题目描述 KC来到了一个盛产瓷器的国度.他来到了一位商人的店铺.在这个店铺中,KC看到了一个有n(1<=n<=100)排的柜子,每 ...

  9. 【Visual Studio】解决错误 fatal error C1010: unexpected end of file while looking for precompiled head(转)

    原文转自 http://blog.csdn.net/liuqiyao_01/article/details/38867145 在编译VS时候,出现fatal error C1010: unexpect ...

  10. Linux/Unix编程中的线程安全问题【转】

    转自:http://blog.csdn.net/zhengzhoudaxue2/article/details/6432984 在目前的计算机科学中,线程是操作系统调度的最小单元,进程是资源分配的最小 ...