module ItamaeMitsurin::Resource
Constants
- AttributeMissingError
- Error
- InvalidTypeError
- ParseError
Public Class Methods
define_resource(name, klass)
click to toggle source
def autoload_plugin_resource(method)
begin require "itamae/plugin/resource/#{method}" ::ItamaeMitsurin::Plugin::Resource.const_get(to_camel_case(method.to_s)) rescue LoadError, NameError raise Error, "#{method} resource is missing." end
end
# File lib/itamae-mitsurin/resource.rb, line 58 def define_resource(name, klass) class_name = to_camel_case(name.to_s) if Resource.const_defined?(class_name) ItamaeMitsurin.logger.warn "Redefine class. (#{class_name})" return end Resource.const_set(class_name, klass) end
get_resource_class(method)
click to toggle source
# File lib/itamae-mitsurin/resource.rb, line 37 def get_resource_class(method) begin self.const_get(to_camel_case(method.to_s)) rescue NameError begin ::ItamaeMitsurin::Plugin::Resource.const_get(to_camel_case(method.to_s)) rescue NameError autoload_plugin_resource(method) end end end
parse_description(desc)
click to toggle source
# File lib/itamae-mitsurin/resource.rb, line 68 def parse_description(desc) if /\A([^\[]+)\[([^\]]+)\]\z/ =~ desc [$1, $2] else raise ParseError, "'#{desc}' doesn't represent a resource." end end
to_camel_case(str)
click to toggle source
# File lib/itamae-mitsurin/resource.rb, line 33 def to_camel_case(str) str.split('_').map {|part| part.capitalize}.join end