module Itamae::Resource
Constants
- AttributeMissingError
- Error
- InvalidTypeError
- ParseError
Public Class Methods
autoload_plugin_resource(method)
click to toggle source
# File lib/itamae/resource.rb, line 42 def autoload_plugin_resource(method) begin require "itamae/plugin/resource/#{method}" ::Itamae::Plugin::Resource.const_get(to_camel_case(method.to_s)) rescue LoadError, NameError raise Error, "#{method} resource is missing." end end
define_resource(name, klass)
click to toggle source
# File lib/itamae/resource.rb, line 51 def define_resource(name, klass) class_name = to_camel_case(name.to_s) if Resource.const_defined?(class_name) Itamae.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/resource.rb, line 30 def get_resource_class(method) begin self.const_get(to_camel_case(method.to_s)) rescue NameError begin ::Itamae::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/resource.rb, line 61 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/resource.rb, line 26 def to_camel_case(str) str.split('_').map {|part| part.capitalize}.join end