Sha256: effa1fb5b43bb3ba6248597255a7266426670b9db1f9b0c341e9ab2db0bfb7dc

Contents?: true

Size: 849 Bytes

Versions: 2

Compression:

Stored size: 849 Bytes

Contents

class SandwichMaker
  
end

class SandwichEater
  
end

module Cloudist
  class << self
    @@workers = {}
    
    def handle(*queue_names)
      class << queue_names
        def with(handler)
          self.each do |queue_name|
            ((@@workers[queue_name.to_s] ||= []) << handler).uniq!
          end
        end
      end
      queue_names
    end
    
    def use(handler)
      proxy = handler.new
      class << proxy
        def to(queue_name)
          ((@@workers[queue_name.to_s] ||= []) << self.class).uniq!
        end
      end
      proxy
    end
    
    def workers
      @@workers
    end
  end
end

Cloudist.handle('make.sandwich', 'eat').with(SandwichMaker)
Cloudist.use(SandwichEater).to('eat.sandwich')

p Cloudist.workers
# >> {"eat"=>[SandwichMaker], "make.sandwich"=>[SandwichMaker], "eat.sandwich"=>[SandwichEater]}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cloudist-0.2.1 examples/extending_values.rb
cloudist-0.2.0 examples/extending_values.rb