О том, что представляет собой Ruby, а точнее его философия gem’ов, на мой взгляд лучше всего говорит пример Whenever.
Есть простая задача – каждый час запускать на сервер какой-то таск.
Whenever – наиболее популярная библиотека для этой задачи.
Устанавливаем ее. Она выдает бинарник:
wheneverize .
Поскольку Ruby сам по себе ничего толком делать не умеет, у каждой библиотеки свой бинарник, а порой и не один.
Запускаем его. Получаем конфигурационный файл.
Прописываем настройки в очень удобном, читаемом формате.
every :sunday, :at => '12pm' do # Use any day of the week or :weekend, :weekday runner "Task.do_something_great" end
И все. Ничего не происходит. Таск не бежит.
Но есть еще один бинарник!
whenever
Только он тоже просто красиво показывает что ты сам только что написал в конфигурационном файле.
Если ты действительно хочешь запустить таск (а разве я не за этим пришел?!), то нужно написать:
whenever –update-crontab
Дальше выясняется, что на выходе, бинарник читает свою собственную красивенькую конфигурацию, и… пишет cron task.
Подчеркну. Библиотека для запуска тасков установила два своих бинарника, наложила конфигураций, но сама таски запускать не способна.
Более того, если ты вдруг пишешь код на Windows – ты в пролете. Если на OSX – готовь бубен.
И так кажется во всем. Единственное, с чем Ruby справляется блестяще – это наложить кучу где ни попадя. Со всеми остальными задачами Ruby справляется крайне паршиво.