class VCR::Cassette::ERBRenderer
@private
Public Class Methods
new(raw_template, erb, cassette_name=nil)
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 7 def initialize(raw_template, erb, cassette_name=nil) @raw_template, @erb, @cassette_name = raw_template, erb, cassette_name end
Public Instance Methods
render()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 11 def render return @raw_template if @raw_template.nil? || !use_erb? binding = binding_for_variables if erb_variables template.result(binding) rescue NameError => e handle_name_error(e) end
Private Instance Methods
binding_for_variables()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 50 def binding_for_variables @binding_for_variables ||= variables_object.instance_eval { binding } end
erb_variables()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 34 def erb_variables @erb if @erb.is_a?(Hash) end
handle_name_error(e)
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 21 def handle_name_error(e) example_hash = (erb_variables || {}).merge(e.name => 'some value') raise Errors::MissingERBVariableError.new( "The ERB in the #{@cassette_name} cassette file references undefined variable #{e.name}. " + "Pass it to the cassette using :erb => #{ example_hash.inspect }." ) end
template()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 38 def template @template ||= ERB.new(@raw_template) end
use_erb?()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 30 def use_erb? !!@erb end
variables_object()
click to toggle source
# File lib/vcr/cassette/erb_renderer.rb, line 46 def variables_object @variables_object ||= @@struct_cache[erb_variables.keys].new(*erb_variables.values) end