Module: Chef::DSL::IncludeAttribute
- Included in:
- Node
- Defined in:
- lib/chef/dsl/include_attribute.rb
Instance Method Summary collapse
-
#include_attribute(*attr_file_specs) ⇒ Object
Loads the attribute file specified by the short name of the file, e.g., loads specified cookbook's "attributes/mailservers.rb" if passed "mailservers".
-
#parse_attribute_file_spec(file_spec) ⇒ Object
Takes a attribute file specification, like "apache2" or "mysql::server" and converts it to a 2 element array of [cookbook_name, attribute_file_name].
Instance Method Details
#include_attribute(*attr_file_specs) ⇒ Object
Loads the attribute file specified by the short name of the file, e.g., loads specified cookbook's "attributes/mailservers.rb" if passed "mailservers"
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/chef/dsl/include_attribute.rb', line 30 def include_attribute(*attr_file_specs) attr_file_specs.flatten.each do |attr_file_spec| cookbook_name, attr_file = parse_attribute_file_spec(attr_file_spec) if run_context.loaded_fully_qualified_attribute?(cookbook_name, attr_file) Chef::Log.trace("I am not loading attribute file #{cookbook_name}::#{attr_file}, because I have already seen it.") else Chef::Log.trace("Loading Attribute #{cookbook_name}::#{attr_file}") run_context.loaded_attribute(cookbook_name, attr_file) attr_file_path = run_context.resolve_attribute(cookbook_name, attr_file) node.from_file(attr_file_path) end end true end |
#parse_attribute_file_spec(file_spec) ⇒ Object
Takes a attribute file specification, like "apache2" or "mysql::server" and converts it to a 2 element array of [cookbook_name, attribute_file_name]
47 48 49 50 51 52 53 |
# File 'lib/chef/dsl/include_attribute.rb', line 47 def parse_attribute_file_spec(file_spec) if match = file_spec.match(/(.+?)::(.+)/) [match[1], match[2]] else [file_spec, "default"] end end |