Sha256: 264e995e47e8cdac49d3ff1a1b693794c58e77850e804ee2aeed75e53fc0fff6

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

at_exit do
  Juici::App.shutdown
end

module Juici
  class App
    @@watchers = []

    def self.shutdown
      ::Juici.dbgp "Shutting down Juici"
      ::Juici::Watcher.instance.shutdown!

      shutdown_build_queue
    end

    attr_reader :opts
    def initialize(opts={})
      Database.initialize!
      @opts = opts
      reset_stale_children
      start_watcher
      init_build_queue
      reload_unfinished_work
      start_queue
    end

  private

    def init_build_queue
      $build_queue ||= BuildQueue.new
    end

    def self.shutdown_build_queue
      if $build_queue
        $build_queue.shutdown!
        $build_queue = nil
      end

      # Find any remaining children and kill them
      # Ensure that any killed builds will be retried
    end

    def start_watcher
      ::Juici::Watcher.instance.start
    end

    def reload_unfinished_work
      # At this point no workers have started yet, we can safely assume that
      # :started means aborted
      Build.where(:status => Juici::BuildStatus::WAIT).each do |build|
        $build_queue << build
      end
    end

    def reset_stale_children
      Build.where(:status => Juici::BuildStatus::START).each do |build|
        build[:status] = Juici::BuildStatus::WAIT
        build.save!
      end
    end

    def start_queue
      $build_queue.start!
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
juici-0.0.1.alpha1 lib/juici/app.rb
juici-0.0.0.alpha1 lib/juici/app.rb