Sha256: f96f2d1b63f0d32d28fc4a1d1b2421223e39d386460de7507e9b94475721e2be

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

# encoding: UTF-8

require 'fire_and_forget'

module Spontaneous
  module Publishing
    class FireAndForget
      FAF = ::FireAndForget

      def self.task_name
        # TODO: add site name to this to make it unique on a server
        :publish
      end

      def self.register_task
        publish_binary = (Pathname.new(Spontaneous.gem_dir) + "bin/spot publish").expand_path.to_s
        site_root = Pathname.new(Spontaneous.root).expand_path.to_s
        niceness = S.config.publish_niceness || 15
        # TODO: make nice value configurable
        FAF.add_task(task_name, publish_binary, niceness, {
          "site" => site_root,
          "logfile" => "log/publish.log",
          "environment" => Spontaneous.env
        }, {})
      end

      register_task

      def self.status
        FAF.get_status(task_name)
      end

      def self.status=(status)
        FAF.set_status(task_name, status)
      end

      attr_reader :revision

      def initialize(revision)
        @revision = revision
      end

      def task_name
        self.class.task_name
      end

      def publish_changes(change_list)
        FAF.fire(task_name, {"changes" => change_list})
      end

      def publish_all
        FAF.fire(task_name)
      end
    end # FireAndForget
  end # Publishing
end # Spontaneous

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spontaneous-0.1.0.alpha1 lib/spontaneous/publishing/fire_and_forget.rb