yield in ERB without rails
Check out Tilt (http://github.com/rtomayko/tilt/). It's the gem that handles templating in Sinatra and it provides ERB yields along with many other nice features.
You can use Tilt but if you don't want to add an extra dependency, here's a better example on how you can yield in erb:
require "erb"
class Controller
TEMPLATE = ERB.new("Hello <%= @someone %>\n\n<%= yield %>")
def initialize(someone)
@someone = someone
end
def render
TEMPLATE.result(self.get_binding { yield })
end
def get_binding
binding
end
end
puts Controller.new("World").render { "I'm Jack" }
# =>
Hello World
I'm Jack
I found the answer here.
def a
ERB.new('<%= yield %>').result(binding)
end
a{123}
#=> "123"
It's important that the call to Kernel#binding
be inside a method, that way the context includes the block (ERB#result
won't take a block).
I don't think you can - Rails provides that infrastructure as part of actionpack.
What you may be able to do is take actionpack and add it into your script.
Alternatively you could roll a lightweight templating system yourself.
Alternatively alternatively use Rails or Merb or Sinatra.