#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-скрипте Шона Берка:
Ответ №4:
Взгляните на Ruby gem cronexhttps://github.com/alpinweis/cronex