Sha256: 1aa8d1c23d3a379ff66471ba4233bc644b132de512b7800bd2227d8c628b283e

Contents?: true

Size: 1.27 KB

Versions: 7

Compression:

Stored size: 1.27 KB

Contents

require "ruby-clock/version"
require "ruby-clock/rake"
require "ruby-clock/shell"
require "ruby-clock/around_actions"
require "ruby-clock/rails"
require 'rufus-scheduler'
require 'singleton'

class RubyClock
  include Singleton
  include RubyClock::Rails::InstanceMethods
  extend RubyClock::Rails::ClassMethods
  include RubyClock::Rake
  include RubyClock::Shell
  include RubyClock::AroundActions

  attr_accessor :on_error, :around_trigger_code_location

  def initialize
    set_up_around_actions
  end

  def wait_seconds
    ENV['RUBY_CLOCK_SHUTDOWN_WAIT_SECONDS']&.to_i || 29
  end

  def shutdown
    puts "Shutting down ruby-clock. Waiting #{wait_seconds} seconds for jobs to finish..."
    schedule.shutdown(wait: wait_seconds)
    puts "...done 🐈️ 👋"
  end

  def listen_to_signals
    signals = %w[INT TERM]
    signals.each do |signal|
      old_handler = Signal.trap(signal) do
        shutdown
        if old_handler.respond_to?(:call)
          old_handler.call
        else
          exit
        end
      end
    end
    puts "RUBY_CLOCK_SHUTDOWN_WAIT_SECONDS is set to #{wait_seconds}"
  end

  def schedule
    Rufus::Scheduler.singleton
  end

  def run_jobs
    puts "Starting ruby-clock with #{schedule.jobs.size} jobs"
    schedule.resume
    schedule.join
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ruby-clock-2.0.1 lib/ruby-clock.rb
ruby-clock-2.0.0 lib/ruby-clock.rb
ruby-clock-2.0.0.beta10 lib/ruby-clock.rb
ruby-clock-2.0.0.beta9 lib/ruby-clock.rb
ruby-clock-2.0.0.beta8 lib/ruby-clock.rb
ruby-clock-2.0.0.beta7 lib/ruby-clock.rb
ruby-clock-2.0.0.beta6 lib/ruby-clock.rb