class Spacelift::Policy::Collection
Collection
is a singleton instance combining multiple rules. It's defined this way to allow pulling policy from multiple files in no particular order.
Public Class Methods
new()
click to toggle source
# File lib/spacelift/policy/policy.rb, line 28 def initialize @rules = [] @violations = [] end
Public Instance Methods
ensure(name, &block)
click to toggle source
# File lib/spacelift/policy/policy.rb, line 33 def ensure(name, &block) raise Error, "definition not provided for rule '#{name}'" unless block @rules << Rule.new(name, &block) end
process(resources)
click to toggle source
# File lib/spacelift/policy/policy.rb, line 39 def process(resources) raise Error, 'no rules defined' if @rules.empty? resources.each { |resource| process_resource(resource) } @violations end
Private Instance Methods
process_resource(resource)
click to toggle source
# File lib/spacelift/policy/policy.rb, line 48 def process_resource(resource) @rules.each do |rule| ok, violation = rule.process(resource) @violations << violation unless ok end end