Sinatra has built in handlers to render erb, haml, builder, and sass. Layouts are handled by automatically grabbing the file layout.erb (or layout.haml, etc). Partials are a bit of a pain, since you have to write your own helper, but at it's core, you're just calling the same erb helper, but with :layout => false.
It's downright trivial to add your own rendering helper for any templating language.
And for organization purposes, it's really freeform. Act like you're writing any other ruby app, and organize how you like. If it's small, a single file makes sense, if it's medium sized, maybe a file for controller and one for models, for big, do the split into an app/{routes,models,views}. All of that is easily supported.
Check out Monk as a good example of how Sinatra can be adapted to a more complex directory structure.
Another thing I love about Sinatra is that instead of controller/model/view files, I can do users/posts/comments, with one file for each functional area.
So far I see nothing that makes Sinatra more appealing or useful than Ramaze, and some thing that make it less so.
The curious thing is that on the one hand Sinatra gets described as a "framework", and on other other hand there's a great deal of BYOC (bring your own code).
That's fine, and something I tedn to prefer, but if I really want lightweight microstuff I'd start with a plain Rack app, and if I need more I'd convert it into a Ramaze app.
I do like how Sinatra auto-maps the REST verbs, but basically it comes off more as Rack middleware with a cheering section than an actual Web framework, micro or otherwise.
I have no horse in this race, I'm just using and liking Sinatra as a "sandbox framework" to go along with our Rails deployment. So, with that said:
Sell me on Ramaze. I love that I can whip out a 2-file application in Sinatra --- one file for the Ruby and templates, and another for the jQ js that'll run on the client. What does Ramaze do better than Sinatra for me?
". I love that I can whip out a 2-file application in Sinatra --- one file for the Ruby and templates, and another for the jQ js that'll run on the client."
Yeah, I love that about Ramaze as well. :)
"What does Ramaze do better than Sinatra for me?"
Appears to be faster (at least in some simple benchmarks I ran). Choice of templating language may be key.
Has a better-sized set of robust standard helpers, should you want to load them.
More built-in adapters for a wide variety of template engines (Haml, Ezamar, Liquid, Markaby, others)
Whether or not any of this works out as "better" for anyone is hard to say. I like that Sinatra doesn't dump a ton of must-load crap on you just to get started, but neither does rolling a plain Rack app. Or Ramaze, for that matter.
It's also nice to have a reliable set of built-in libs to pull from, and as best I can see there's a stronger choice in Ramaze.
But, to be honest, Sinatra just never showed enough value to me to dig into all it's possibilities, so I may be wrong in my observations.
It's downright trivial to add your own rendering helper for any templating language.
And for organization purposes, it's really freeform. Act like you're writing any other ruby app, and organize how you like. If it's small, a single file makes sense, if it's medium sized, maybe a file for controller and one for models, for big, do the split into an app/{routes,models,views}. All of that is easily supported.
Check out Monk as a good example of how Sinatra can be adapted to a more complex directory structure.
(also, Hi James!).