Running erb templates from the command line
template the command erb is in scope to call more templates. I wrote this for a friend who was having hell with NVU templates and I suggested to write the code by hand and use this script to build his static pages.
#!/usr/bin/ruby # Quick and dirty template processing script. It takes # as an argument the name of the first template script # and then executes it to standard output. require "erb" class QuickTemplate attr_reader :args, :text def initialize(file) @text = File.read(file) end def exec(args={}) b = binding template = ERB.new(@text, 0, "%<>") result = template.result(b) # Chomp the trailing newline result.gsub(/\n$/,'') end end def erb(file, args={}) QuickTemplate.new(file).exec(args) end puts erb(ARGV[0])
The erb command itself takes an optional argument of a hash which is passed to the template as the
variable name args. Thus you can parameterize your sub templates.
Call the command as
ruby erb_run.rb main.thtml
The main template
<html> <head> </head> <div> <%= erb("title.thtml") %> </div> </html>
and the sub template title.thtml
<title> This is Alex's cool restraunt</title>