module Scheduled
Constants
- Job
- VERSION
Public Instance Methods
every(interval, &block)
click to toggle source
# File lib/scheduled.rb, line 10 def every(interval, &block) if interval.is_a?(Integer) task = Concurrent::TimerTask.new(execution_interval: interval, run_now: true) do block.call end task.execute elsif interval.is_a?(String) run = ->() { parsed_cron = CronParser.new(interval) next_tick_delay = parsed_cron.next(Time.now) - Time.now task = Concurrent::ScheduledTask.execute(next_tick_delay) do block.call run.call end task.execute } run.call elsif interval.respond_to?(:call) job = Job.new task = Concurrent::TimerTask.new(execution_interval: 1, run_now: true) do |timer_task| case interval.call(job) when true block.call job.last_run = Time.now when :cancel timer_task.shutdown end end task.execute else raise ArgumentError, "Unsupported value for interval" end end
wait()
click to toggle source
# File lib/scheduled.rb, line 53 def wait trap("INT") { exit } loop do sleep 1 end end