# Flexible, template-freeable web framework?

**URL:** <https://www.ruby-forum.com/t/flexible-template-freeable-web-framework/132904>\
**Category:** Ruby\
**Created:** [March 25, 2008, 6:06pm UTC](https://www.ruby-forum.com/t/flexible-template-freeable-web-framework/132904 "2008-03-25T18:06:11Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![bdmcnitt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a4c791/32.png) [@bdmcnitt](https://www.ruby-forum.com/u/bdmcnitt)\
**Post date:** [March 25, 2008, 6:06pm UTC](https://www.ruby-forum.com/t/flexible-template-freeable-web-framework/132904/1 "2008-03-25T18:06:11Z")

</div>

I have this idea of answering the question “What would happen if I  
added unprecedented amounts of built-in support for exploratory  
testing to a web app?” For the reasons, see  
\<[Exploration Through Example » Blog Archive » An alternative to business-facing TDD](http://www.exampler.com/blog/2008/03/23/an-alternative-to-business-facing-tdd/)

> , but the reasons aren’t important for this note.

Adding such support would (I suspect) require that the app make some  
things real (into objects) that we ordinarily leave implicit. Examples:

1. Rather than substituting a bunch of values into a template,  
stuffing the resulting string into an HTTP Response, and then  
forgetting everything that went into the response, I see a controller  
action creating a page object. That page object can be told to render  
itself the normal way, but it can also be told to render itself in  
ways a tester might prefer.

2. If I’m going to put a link on a page, and it’s a link to a  
particular model object, I don’t want to lose that fact. I want a  
tester to be able to say “oh, so you’re an edit link to a  
Certification, eh? Show me the Certification you link to as HTML - no,  
wait, show it in some raw form.”

3. I bet it would be nice if the GoF Command pattern were used for  
controller actions so that a tester could easily replay what she just  
did. (And snapshot workflow state so that she can “back up” and  
restart along another path: think Prevayler, journaling file systems,  
and version control systems applied to app state.)

I don’t think Rails would be a good choice for this work because it’s  
built around assumptions that I would have to violate, meaning  
potentially substantial changes to a big and complex code base.  
Further, if the ideas turn out to be worthwhile, I’d want them to end  
up in trunk, and that’s pretty unlikely of a mature product that  
oughtn’t disrupt its user base this much.

So ideal would be a smaller, newer framework that’s looking to  
distinguish itself from Rails. I’ve been looking around at the  
different frameworks, but I thought it’d also be good to ask if people  
have frameworks to recommend. (Best would be a note from a framework  
author saying, “What a coincidence - I’m already working on something  
very like that!”)

---

<div class="post-metadata">

**Author:** ![bdmcnitt](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a4c791/32.png) [@bdmcnitt](https://www.ruby-forum.com/u/bdmcnitt)\
**Post date:** [March 25, 2008, 6:45pm UTC](https://www.ruby-forum.com/t/flexible-template-freeable-web-framework/132904/2 "2008-03-25T18:45:13Z")

</div>

On 25 Mar 2008, at 17:04, Brian M. wrote:

> stuffing the resulting string into an HTTP Response, and then
> 
> Further, if the ideas turn out to be worthwhile, I’d want them to  
> end up in trunk, and that’s pretty unlikely of a mature product that  
> oughtn’t disrupt its user base this much.
> 
> So ideal would be a smaller, newer framework that’s looking to  
> distinguish itself from Rails. I’ve been looking around at the  
> different frameworks, but I thought it’d also be good to ask if  
> people have frameworks to recommend. (Best would be a note from a  
> framework author saying, “What a coincidence - I’m already working  
> on something very like that!”)

I did something rather similar a couple of years ago using WEBrick,  
before I put the effort into learning Rails. With WEBrick it’s really  
easy to handle web interaction however you like, including buffering  
requests for multiple replays or avoiding the whole MVC paradigm  
altogether 🙂 I keep meaning to go back to it someday, but other  
projects come along.

Ellie

## Eleanor McHugh Games With Brains [http://slides.games-with-brains.net/](http://slides.games-with-brains.net/)

raise ArgumentError unless @reality.responds\_to? :reason
