class Swarm::Engine::Worker::Command
Attributes
action[R]
hive[R]
metadata[R]
Public Class Methods
from_job(job, hive: Hive.default)
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 8 def from_job(job, hive: Hive.default) data = job.to_h action, metadata = data.values_at(:action, :metadata) new(action: action, metadata: metadata, hive: hive) end
new(hive: Hive.default, action:, metadata:)
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 17 def initialize(hive: Hive.default, action:, metadata:) @hive = hive @action = action @metadata = Swarm::Support.symbolize_keys(metadata || {}) end
Public Instance Methods
==(other)
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 55 def ==(other) other.is_a?(self.class) && other.to_hash == to_hash end
object()
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 36 def object @object ||= begin return nil unless metadata[:type] && metadata[:id] hive.fetch(metadata[:type], metadata[:id]) end end
observers()
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 30 def observers @observers ||= hive.registered_observers.map { |observer_class| observer_class.new(self) } end
run!()
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 23 def run! raise MissingObjectError if object.nil? observers.each(&:before_action) object.send("_#{action}") observers.each(&:after_action) end
stop?()
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 43 def stop? action == "stop_worker" end
to_hash()
click to toggle source
# File lib/swarm/engine/worker/command.rb, line 47 def to_hash { action: action, metadata: metadata, object: object } end