require 'boxxspring-worker'
namespace :worker do
descendants = Boxxspring::Worker::Base.descendants descendants.delete( Boxxspring::Worker::TaskBase ) descendants.each do | worker_class | worker_name = worker_class.name.underscore.gsub(/_worker\Z/, '') human_name = worker_class.name.underscore.gsub('_', ' ') desc "#{ human_name }" task worker_name.to_sym do worker = worker_class.new logger = worker.logger spinner = %w{| / - \\} print 'working... ' logger.info( "The #{ human_name } has started." ) begin loop do print "\b" + spinner.rotate!.first worker.process end rescue SystemExit, Interrupt logger.info( "The #{ human_name } has stopped." ) puts 'stopped' exit 130 end end end
end