Sha256: 3b2141832365027c4dd6bcafa58473a9b928f88feabe2f952559ea380c64d621

Contents?: true

Size: 1023 Bytes

Versions: 2

Compression:

Stored size: 1023 Bytes

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
      return unless run_assures
      run_before_callbacks
      task_return_value = run_task
      run_after_callbacks

      task_return_value
    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

2 entries across 2 versions & 1 rubygems

Version Path
anvil-core-0.6.0 lib/anvil/task.rb
anvil-core-0.5.0 lib/anvil/task.rb