Gavin Kistner wrote:

> Separate from the "because it's what certain people expect" factor, I  
> consider the current method of appending strings to "_erbout" less  
> convenient/ideal than using muscle-memory-friendly methods like #puts.

Can you give me an example of when appending to _erbout is necessary or 
preferred rather than saying "%>some text<%" or "%><%=some value%><%"?

> To take it to the extreme, what if ERB did not support any Kernel  
> methods, but provided another mechanism for calling them? What if you  
> couldn't write "myobj.foo" but instead had to write "myobj.send ( :foo 
> )" to invoke the method? The exact same functionality would  still be 
> there...you would just need to remember, when using ERB, to  write 
> your code in a different way than you do normally.

The exact same functionality *is* available when you puts or print. With 
your change, people expecting to spit out debug messages would have to 
do $stdout.puts...

> The more ERB 'just works' right out of  the box, the greater a tool it 
> becomes to lure people to Ruby.

Understood. Well, for what it's worth right now, the features it has 
work almost exactly as they do in JSP, including the separation between 
puts (System.out.println, as usual) and _erbout (newly conceived 
out.println).

> That's how I look at it, anyhow. Do others actually think of an ERB  
> template as an enormous HEREDOC string in another file that is going  
> to be included in your program, and ERB as an uber-powerful gsub to  
> run on that string?

Well, yes, but that's because I know how it works. I understand that 
newbs don't see it that way. Those that know say, "Don't hide the truth! 
Make the newbs learn!" You say, "Make the abstraction so pure that newbs 
don't /need/ to learn!" There is some validity in that argument, but, 
sadly, I'm going to side with Joel[1] on this one.

Devin
[1] http://www.joelonsoftware.com/articles/LeakyAbstractions.html