class Serverkit::ResourceBuilder

Public Class Methods

new(recipe, attributes) click to toggle source

@param [Serverkit::Recipe] recipe @param [Hash] attributes

# File lib/serverkit/resource_builder.rb, line 23
def initialize(recipe, attributes)
  @attributes = attributes
  @recipe = recipe
end

Public Instance Methods

build() click to toggle source

@return [Serverkit::Resources::Base]

# File lib/serverkit/resource_builder.rb, line 29
def build
  resource_class.new(@recipe, @attributes)
end

Private Instance Methods

available_resource_classes() click to toggle source

@return [Array<Class>]

# File lib/serverkit/resource_builder.rb, line 36
def available_resource_classes
  Resources.constants.select do |constant_name|
    constant = Resources.const_get(constant_name)
    constant < Resources::Base && !constant.abstract_class?
  end
end
has_known_type?() click to toggle source
# File lib/serverkit/resource_builder.rb, line 43
def has_known_type?
  available_resource_classes.map(&:to_s).include?(resource_class_name)
end
resource_class() click to toggle source

@return [Class]

# File lib/serverkit/resource_builder.rb, line 48
def resource_class
  if type.nil?
    Resources::Missing
  elsif has_known_type?
    Resources.const_get(resource_class_name, false)
  else
    Resources::Unknown
  end
end
resource_class_name() click to toggle source

@return [String] (e.g. “File”, “Symlink”)

# File lib/serverkit/resource_builder.rb, line 59
def resource_class_name
  type.to_s.camelize
end
type() click to toggle source

@note Expected to return String in normal case @return [Object] (e.g. “file”, “symlink”)

# File lib/serverkit/resource_builder.rb, line 65
def type
  @attributes["type"]
end