Sha256: d20d71bd36ecc6510662e2e0f9691a6b23226777e3553de6bbec06bd5de05455

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

require 'thor'

module GoodJob
  class CLI < Thor
    RAILS_ENVIRONMENT_RB = File.expand_path("config/environment.rb")

    desc :start, "Start jobs"
    method_option :max_threads, type: :numeric
    def start
      require RAILS_ENVIRONMENT_RB

      max_threads = options[:max_threads] ||
                    ENV['GOOD_JOB_MAX_THREADS'] ||
                    ENV['RAILS_MAX_THREADS'] ||
                    ActiveRecord::Base.connection_pool.size

      $stdout.puts "GoodJob starting with max_threads=#{max_threads}"
      scheduler = GoodJob::Scheduler.new(pool_options: { max_threads: max_threads })

      %w[INT TERM].each do |signal|
        trap(signal) { @stop_good_job_executable = true }
      end
      @stop_good_job_executable = false

      Kernel.loop do
        sleep 0.1
        break if @stop_good_job_executable || scheduler.shutdown?
      end

      $stdout.puts "\nFinishing GoodJob's current jobs before exiting..."
      scheduler.shutdown
      $stdout.puts "GoodJob's jobs finished, exiting..."
    end

    default_task :start
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
good_job-0.5.0 lib/good_job/cli.rb
good_job-0.4.0 lib/good_job/cli.rb
good_job-0.3.0 lib/good_job/cli.rb