Sha256: bc736f85aac73ac39130cd3fc3007cd9fafc5d324cb665e1d64d72f750faa91e

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

# encoding: UTF-8

require 'anvil/task/class_methods'
require 'anvil/task/naming'
require 'anvil/task/options'
require 'anvil/task/callback'

module Anvil
  # Common class for all tasks
  class Task
    extend ClassMethods
    extend Naming
    extend Options

    attr_reader :options

    def initialize(options = {})
      @options = options
    end

    # Runs a task and its callbacks if the assures are OK
    #
    # @return [Object, nil] anything the task might return
    def run
      if run_assures
        run_before_callbacks
        task_return_value = run_task
        run_after_callbacks

        task_return_value
      end
    end

    def logger
      Anvil.logger
    end

    protected

    def run_after_callbacks
      self.class.afters.each { |callback| callback.run }
    end

    def run_assures
      self.class.assures.map { |a| a.new.assured? }.all?
    end

    def run_before_callbacks
      self.class.befores.each { |callback| callback.run }
    end

    def run_task
      task
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
anvil-core-0.4.2 lib/anvil/task.rb
anvil-core-0.4.1 lib/anvil/task.rb
anvil-core-0.4.0 lib/anvil/task.rb