ruby插件/ gem将cron转换为人类可读的格式

时间:2011-04-21 14:04:31

标签: ruby rubygems cron gem

是否有一个ruby gem /插件会将* / 10 * * * 1,3之类的内容转换为“周一,周三每10分钟触发一次”?

4 个答案:

答案 0 :(得分:3)

我不知道任何事情,我也没有找到任何关于谷歌的东西。你可以自己一起破解:

>> cron = "*/10 * * * 1,3 foo" 
#=> "*/10 * * * 1,3 foo"
>> min, hour, dom, month, dow, command = cron.split 
#=> ["*/10", "*", "*", "*", "1,3", "foo"]

有了变量后,您就可以开始组装输出部件了:

>> require 'date' 
#=> true
>> dow.split(/,/).map { |day| Date::DAYNAMES[day.to_i] } 
#=> ["Monday", "Wednesday"]
>> min.start_with?('*') ? "every #{min.split('/')[1]} minutes" : "#{min} past" 
#=> "every 10 minutes"
>> min = '5' 
#=> "5"
>> min.start_with?('*') ? "every #{min.split('/')[1]} minutes" : "#{min} past" 
#=> "5 past"

显然,这只是一些粗略的想法(例如,您可能需要一个带有捕获组的正则表达式来解析条目),但是由于crontab条目已经明确指定,所以要想出一些适用于它的东西应该不会太难您可能遇到的大多数条目。

答案 1 :(得分:1)

答案 2 :(得分:1)

我根据Sean Burke的Perl脚本编写了一个Ruby gem:

https://github.com/pjungwir/cron2english

答案 3 :(得分:1)

看看Ruby gem cronex https://github.com/alpinweis/cronex