views:

106

answers:

2

I've worked through some of the Sinatra and Rails samples, but I'm having a hard time figuring out which features belong to which technology.

What specifically do I gain by using Sinatra/Rails? Is it just ActionPack/ActionView? Correct me if I'm wrong, but I COULD just use Webrick/Mongrel and serve up my .erb files right? And I could use ActiveRecord technology in those files and still access post variables, session state and querystring variables right?

So, what I'm asking you guys is, if I start with the PHP-like scenario above; Webrick + ERB + ActiveRecord, what do I gain by using Sinatra? And what do I further gain by using Rails?

A: 

The gain by Rails is ActionView/ActionPack. But you can just replace by Mongrel/Erb. It's something different.

It's all herlper you have in your view like name_route or error management in your form. It's all resources management and all plugin like InheritedResources. The advantage of Rails.

There are some tool like the Padrino environment to help you to have all of this helper. But It's really speeder after all plugin activate ? I don't think so.

With Rails 3, Rails is a complete Rack application with a lot of RackMiddleware. You can just drop off some middleware to increase your response.

shingara
+2  A: 

For Sinatra, it's really almost like a wrapper around Rack. So you first need to ask what the point of Rack is. Rack is basically a specification for how a framework should return a result, it can use what's returned with any web server that Rack supports. So it's really a compatibility layer that allows you to choose your framework/server combination at will, without worrying about whether they'll work together. If your framework is Rack-compliant, you should be able to deploy on practically any server via Rack.

Now, the thing is Rack is very low level. Frameworks such as Sinatra give you thinks like nice routing, helpers, before/after filters, and a lot more. You just need to look to the docs to see what you can get. Rails is much more featureful, and in many ways "magical". That is, you might write a single line in Rails that ends up doing quite a lot, which for some is a good thing, and for some too magical. I personally prefer Sinatra for this reason, at least before getting a decent understanding of Rails internals.

ehsanul
Thanks for the info. Here's a follow up question: If I didn't have Rails or Sinatra, how would I go about just using Webrick to serve up some ERB files? I assume it's possible to just use ruby commands to start the webrick on a certain port and point it at a certain directory?
LoveMeSomeCode
I just Googled for "webrick", 3rd result: http://microjet.ath.cx/webrickguide/html/ - and also this: http://segment7.net/projects/ruby/WEBrick/servlets.html
ehsanul
I don't see why you want to bother with all that though honestly, seems pretty pointless, and Webrick isn't exactly the best server. You can just use Sinatra's URL routing as an interface to ERB if that's all you really want. You can ignore all the other features, or use them later if you wish. Did you see the hello world for Sinatra? Super simple (and lines of code wouldn't change if you wanted it to reference an ERB file instead of just the string): http://http://www.sinatrarb.com/
ehsanul
thanks for the info. I think I'm going with Sinatra for this project. And thanks for the links!
LoveMeSomeCode