Skip to content

Instantly share code, notes, and snippets.

@lifo
Created November 6, 2008 11:17
Show Gist options
  • Save lifo/22558 to your computer and use it in GitHub Desktop.
Save lifo/22558 to your computer and use it in GitHub Desktop.
require 'erb'
local_assigns = {:a => 10, :b => 20}
locals_code = local_assigns.keys.map { |key| "#{key} = local_assigns[:#{key}];" }.join
source = "<%= whatever_is_in_your_template %>"
compiled_source = ERB.new(source).src
method_name = 'derived_from_template_name_and_local_keys'
compiled_method_source = source = <<-end_src
def #{method_name}(local_assigns)
old_output_buffer = output_buffer;#{locals_code};#{compiled_source}
ensure
self.output_buffer = old_output_buffer
end
end_src
puts compiled_method_source
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment