Sha256: 6cdd366d84e3bb1816b68115011fda0a93da39e4bcefdbdbd30b8c8beae34e0c

Contents?: true

Size: 739 Bytes

Versions: 1

Compression:

Stored size: 739 Bytes

Contents

module Asynchronic
  class Runtime
    
    attr_reader :process

    def initialize(process)
      @process = process
    end

    def evaluate
      begin
        @data = process.data
        process.job.local.each { |k,v| define_singleton_method(k) { v } }
        instance_eval &process.job.class.implementation
      ensure
        process.merge @data
      end
    end

    def self.evaluate(process)
      new(process).evaluate
    end

    private

    def define_job(job_class, options={})
      defaults = {
        parent: process.job.lookup.id,
        queue: job_class.queue || process.queue
      }
      
      process.env.build_job job_class, defaults.merge(options)
    end
    
    def data
      @data
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
asynchronic-0.1.0 lib/asynchronic/runtime.rb