Sha256: db656c88222713e2eab5b255b80cad1dadd5ef179dc34464d552c5ac6c400d51

Contents?: true

Size: 1.08 KB

Versions: 63

Compression:

Stored size: 1.08 KB

Contents

module Picky

  class Scheduler

    attr_reader :parallel

    def initialize options = {}
      @parallel = options[:parallel]
      @factor   = options[:factor] || 2

      configure
    end

    def configure
      if fork?
        def schedule &block
          scheduler.schedule &block
        end

        def finish
          scheduler.join
        end

        def scheduler
          @scheduler ||= create_scheduler
        end
        
        def create_scheduler
          Procrastinate::Scheduler.start Procrastinate::SpawnStrategy::Default.new(@factor)
        end
      else
        def schedule
          yield
        end

        def finish
          # Don't do anything.
        end
      end
    end

    def fork?
      require 'procrastinate'
      parallel && Process.respond_to?(:fork)
    rescue LoadError => e
      warn_procrastinate_missing
      return false
    end
    def warn_procrastinate_missing
      warn_gem_missing 'Procrastinate', 'parallelized indexing (with the procrastinate gem)' unless @gem_missing_warned
      @gem_missing_warned = true
    end

  end

end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
picky-4.15.0 lib/picky/scheduler.rb
picky-4.14.0 lib/picky/scheduler.rb
picky-4.13.1 lib/picky/scheduler.rb
picky-4.13.0 lib/picky/scheduler.rb
picky-4.12.13 lib/picky/scheduler.rb
picky-4.12.12 lib/picky/scheduler.rb
picky-4.12.11 lib/picky/scheduler.rb
picky-4.12.10 lib/picky/scheduler.rb
picky-4.12.8 lib/picky/scheduler.rb
picky-4.12.7 lib/picky/scheduler.rb
picky-4.12.6 lib/picky/scheduler.rb
picky-4.12.5 lib/picky/scheduler.rb
picky-4.12.4 lib/picky/scheduler.rb
picky-4.12.3 lib/picky/scheduler.rb
picky-4.12.2 lib/picky/scheduler.rb
picky-4.12.1 lib/picky/scheduler.rb
picky-4.12.0 lib/picky/scheduler.rb
picky-4.11.3 lib/picky/scheduler.rb
picky-4.11.2 lib/picky/scheduler.rb
picky-4.11.1 lib/picky/scheduler.rb