Sha256: cb8a0dc6ed4247c3068f3d44272c287f516890ba5dba855a72107474af358af9
Contents?: true
Size: 1.46 KB
Versions: 2
Compression:
Stored size: 1.46 KB
Contents
module Rao module ServiceChain module Step class Base attr_accessor :service, :service_name, :label, :chain def initialize(options = {}) @service = options.delete(:service) @chain = options.delete(:chain) @completed_if = options.delete(:completed_if) @service_name = @service.try(:name) @label = service.try(:model_name).try(:human) @url = options.delete(:url) end def url(context = nil) return nil if context.nil? return context.instance_exec(@service, &@url) if @url.respond_to?(:call) @url ||= context.url_for([:new, @service, only_path: true]) end def completed? return nil unless @completed_if.respond_to?(:call) @chain.instance_exec(@service, &@completed_if) end def pending? !completed? end def completion_status completed? ? :completed : :pending end def actual? return false if @chain.actual_step.nil? @chain.actual_step.service == @service end def to_hash(context = nil) { service: service, service_name: service.name, label: label, completed: completed?, pending: pending?, completion_status: completion_status, actual: actual?, url: url(context) } end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rao-service_chain-0.0.34.pre | app/service_steps/rao/service_chain/step/base.rb |
rao-service_chain-0.0.33.pre | app/service_steps/rao/service_chain/step/base.rb |