Sha256: f6350719c024b64d6b44ea608fc068d13363486388d665cfda78cd525e4985fc

Contents?: true

Size: 745 Bytes

Versions: 9

Compression:

Stored size: 745 Bytes

Contents

module Itamae
  class ResourceCollection < Array
    NotFoundError = Class.new(StandardError)

    def find_by_description(desc)
      # desc is like 'resource_type[name]'
      self.find do |resource|
        type, name = Itamae::Resource.parse_description(desc)
        resource.resource_type == type && resource.resource_name == name
      end.tap do |resource|
        unless resource
          raise NotFoundError, "'#{desc}' resource is not found."
        end
      end
    end

    def subscribing(target)
      self.map do |resource|
        resource.subscribes_resources.map do |action, r, timing|
          if r == target
            [action, resource, timing]
          end
        end.compact
      end.flatten(1)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
itamae-1.0.0.beta10 lib/itamae/resource_collection.rb
itamae-1.0.0.beta9 lib/itamae/resource_collection.rb
itamae-1.0.0.beta8 lib/itamae/resource_collection.rb
itamae-1.0.0.beta7 lib/itamae/resource_collection.rb
itamae-1.0.0.beta6 lib/itamae/resource_collection.rb
itamae-1.0.0.beta5 lib/itamae/resource_collection.rb
itamae-1.0.0.beta4 lib/itamae/resource_collection.rb
itamae-1.0.0.beta3 lib/itamae/resource_collection.rb
itamae-1.0.0.beta2 lib/itamae/resource_collection.rb