require "ice/eco_template/base" module Ice module EcoTemplate class Handler < ActionView::Template::Handler def self.call(template) <<-ECO template_source = <<-ECO_TEMPLATE #{template.source} ECO_TEMPLATE variable_names = controller.instance_variable_names variable_names -= %w[@template] if controller.respond_to?(:protected_instance_variables) variable_names -= controller.protected_instance_variables end variables = {} variable_names.each do |name| variables[name.sub(/^@/, "")] = controller.instance_variable_get(name) end Ice::EcoTemplate.convert_template(template_source, variables.merge(local_assigns)) ECO end end end end