Class: StackMaster::CloudFormationInterpolatingEruby
- Inherits:
-
Erubis::Eruby
- Object
- Erubis::Eruby
- StackMaster::CloudFormationInterpolatingEruby
- Includes:
- Erubis::ArrayEnhancer
- Defined in:
- lib/stack_master/cloudformation_interpolating_eruby.rb
Overview
This class is a modified version of Erubis::Eruby. It allows using
<%= %> ERB expressions to interpolate values into a source string. We use
this capability to enrich user data scripts with data and parameters pulled
from the AWS CloudFormation service. The evaluation produces an array of
objects ready for use in a CloudFormation Fn::Join intrinsic function.
Class Method Summary collapse
-
.evaluate_file(source_path, context = Erubis::Context.new) ⇒ Object
Load a template from a file at the specified path and evaluate it.
Instance Method Summary collapse
- #add_expr(src, code, indicator) ⇒ Object
-
#evaluate(_context = Erubis::Context.new) ⇒ Array
The result of evaluating the source: an array of strings from the source intermindled with Hash objects from the ERB expressions.
Class Method Details
.evaluate_file(source_path, context = Erubis::Context.new) ⇒ Object
Load a template from a file at the specified path and evaluate it.
15 16 17 18 19 20 |
# File 'lib/stack_master/cloudformation_interpolating_eruby.rb', line 15 def self.evaluate_file(source_path, context = Erubis::Context.new) template_contents = File.read(source_path) eruby = new(template_contents) eruby.filename = source_path eruby.evaluate(context) end |
Instance Method Details
#add_expr(src, code, indicator) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/stack_master/cloudformation_interpolating_eruby.rb', line 36 def add_expr(src, code, indicator) if indicator == '=' src << " #{@bufvar} << (" << code << ');' else super end end |
#evaluate(_context = Erubis::Context.new) ⇒ Array
Returns The result of evaluating the source: an array of strings
from the source intermindled with Hash objects from the ERB
expressions. To be included in a CloudFormation template, this
value needs to be used in a CloudFormation Fn::Join intrinsic
function.
31 32 33 |
# File 'lib/stack_master/cloudformation_interpolating_eruby.rb', line 31 def evaluate(_context = Erubis::Context.new) format_lines_for_cloudformation(super) end |