Module: ItamaeMitsurin::Resource
- Defined in:
- lib/itamae-mitsurin/resource.rb,
lib/itamae-mitsurin/resource/git.rb,
lib/itamae-mitsurin/resource/base.rb,
lib/itamae-mitsurin/resource/file.rb,
lib/itamae-mitsurin/resource/link.rb,
lib/itamae-mitsurin/resource/user.rb,
lib/itamae-mitsurin/resource/group.rb,
lib/itamae-mitsurin/resource/execute.rb,
lib/itamae-mitsurin/resource/package.rb,
lib/itamae-mitsurin/resource/s3_file.rb,
lib/itamae-mitsurin/resource/service.rb,
lib/itamae-mitsurin/resource/template.rb,
lib/itamae-mitsurin/resource/directory.rb,
lib/itamae-mitsurin/resource/gem_package.rb,
lib/itamae-mitsurin/resource/remote_file.rb,
lib/itamae-mitsurin/resource/http_request.rb,
lib/itamae-mitsurin/resource/aws_ebs_volume.rb,
lib/itamae-mitsurin/resource/aws_ec2_instance.rb,
lib/itamae-mitsurin/resource/local_ruby_block.rb,
lib/itamae-mitsurin/resource/remote_directory.rb,
lib/itamae-mitsurin/resource/aws_route53_rrset.rb,
lib/itamae-mitsurin/resource/aws_route53_rrset_alias.rb
Defined Under Namespace
Classes: AwsEbsVolume, AwsEc2Instance, AwsRoute53Rrset, AwsRoute53RrsetAlias, Base, Directory, Execute, File, GemPackage, Git, Group, HttpRequest, Link, LocalRubyBlock, Package, RemoteDirectory, RemoteFile, S3File, Service, Template, User
Constant Summary collapse
- Error =
Class.new(StandardError)
- AttributeMissingError =
Class.new(StandardError)
- InvalidTypeError =
Class.new(StandardError)
- ParseError =
Class.new(StandardError)
Class Method Summary collapse
-
.define_resource(name, klass) ⇒ Object
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.
- .get_resource_class(method) ⇒ Object
- .parse_description(desc) ⇒ Object
- .to_camel_case(str) ⇒ Object
Class Method Details
.define_resource(name, klass) ⇒ Object
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
58 59 60 61 62 63 64 65 66 |
# 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) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# 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) ⇒ Object
68 69 70 71 72 73 74 |
# 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) ⇒ Object
33 34 35 |
# File 'lib/itamae-mitsurin/resource.rb', line 33 def to_camel_case(str) str.split('_').map {|part| part.capitalize}.join end |