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