плагин ruby / gem для преобразования cron в удобочитаемый формат

#ruby #rubygems #cron #gem

#рубин #cron ( хрон ) #рубиновые камни #ruby #rubygems

Вопрос:

Есть ли ruby gem / плагин, который преобразует что-то вроде */10 * * * 1,3 к «Срабатывает каждые 10 минут в понедельник, среду» ?

Комментарии:

1. это не совсем то, что вы хотите, но, возможно, это поможет: github.com/javan/whenever

Ответ №1:

Я ничего не знаю об этом, и я также ничего не нашел в Google. Возможно, вы сможете взломать что-то вместе самостоятельно:

 >> 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 четко определены, не должно быть слишком сложно придумать что-то, что работает для большинства записей, с которыми вы, вероятно, столкнетесь.

Ответ №2:

Комментарии:

1. Эти два примера хороши, но написаны на PHP и Javascript (соответственно), поэтому их необходимо преобразовать в Ruby, чтобы удовлетворить потребности спрашивающих.

Ответ №3:

Для этого я написал Ruby gem, основанный на Perl-скрипте Шона Берка:

https://github.com/pjungwir/cron2english

Ответ №4:

Взгляните на Ruby gem cronexhttps://github.com/alpinweis/cronex