class MinimumTerm::Service
Models a service and its published objects as well as consumed objects. The app itself is part of an Infrastructure
Attributes
consume[R]
errors[R]
infrastructure[R]
name[R]
publish[R]
Public Class Methods
new(infrastructure, data_dir)
click to toggle source
# File lib/minimum-term/service.rb, line 9 def initialize(infrastructure, data_dir) @infrastructure = infrastructure @data_dir = data_dir @name = File.basename(data_dir).underscore load_contracts end
Public Instance Methods
consumed_objects(publisher = nil)
click to toggle source
# File lib/minimum-term/service.rb, line 26 def consumed_objects(publisher = nil) @consume.objects.select do |o| publisher.blank? or o.publisher == publisher end end
consumers()
click to toggle source
# File lib/minimum-term/service.rb, line 20 def consumers infrastructure.services.values.select do |service| service.consuming_from.include?(self) end end
consuming_from()
click to toggle source
# File lib/minimum-term/service.rb, line 16 def consuming_from consumed_objects.map(&:publisher).uniq end
published_objects()
click to toggle source
# File lib/minimum-term/service.rb, line 32 def published_objects @publish.objects end
satisfies?(service)
click to toggle source
# File lib/minimum-term/service.rb, line 36 def satisfies?(service) @publish.satisfies?(service) end
satisfies_consumers?(verbose: false)
click to toggle source
# File lib/minimum-term/service.rb, line 40 def satisfies_consumers?(verbose: false) @errors = {} print "#{name.camelize} satisfies: " if verbose consumers.each do |consumer| @publish.satisfies?(consumer) if @publish.errors.empty? print "#{consumer.name.camelize}".green if verbose next end print "#{consumer.name.camelize}".red if verbose @errors["#{name} -> #{consumer.name}"] = @publish.errors end print "\n" if verbose @errors.empty? end
Private Instance Methods
load_contracts()
click to toggle source
# File lib/minimum-term/service.rb, line 58 def load_contracts @publish = MinimumTerm::PublishContract.new(self, File.join(@data_dir, "publish.schema.json")) @consume = MinimumTerm::ConsumeContract.new(self, File.join(@data_dir, "consume.schema.json")) end