ERBとインスタンス変数

Rails の View のようなテンプレートエンジンを ERB 単体で使う例。
詳しい説明はあちこちで見かけたのですが私が確認したかったポイントに絞ってみました。

#!/usr/bin/ruby
require 'erb'
erb_doc = <<EOS
hello world 1
<% 1.upto(3) do |i| -%>
<%= @hoge %>:<%= i %>
<% end -%>
hello world 2
EOS
class MyTemplate
  def initialize
    @hoge = 123
  end
  def result(script)
    ERB.new(script, nil, '-').result(binding)
  end
end
puts MyTemplate.new.result(erb_doc)
# hello world 1
# 123:1
# 123:2
# 123:3
# hello world 2