class Actors::Actor
Attributes
name[R]
Public Class Methods
new(name, executable, publishes_to: [])
click to toggle source
# File lib/actors/actor.rb, line 5 def initialize(name, executable, publishes_to: []) raise ArgumentError, "'name' should be an instance of Symbol" unless name.instance_of? Symbol raise ArgumentError, "'executable' should be a lambda" unless executable.instance_of?(Proc) && executable.lambda? raise ArgumentError, "'executable' should have arity = 1" unless executable.arity == 1 @name = name @executable = executable @channels = publishes_to end
Public Instance Methods
call(message)
click to toggle source
# File lib/actors/actor.rb, line 15 def call(message) raise ArgumentError, "'message' should be an instance of Hash" unless message.instance_of? Hash result = @executable.call(message) @channels.each { |channel| channel.publish result } end