Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sinatra vs. Rails

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?

like image 473
LoveMeSomeCode Avatar asked Oct 21 '10 16:10

LoveMeSomeCode


People also ask

What is Rails and Sinatra?

While Rails is a framework focused on writing model driven web applications, Sinatra is a library for dealing with HTTP from the server side. If you think in terms of HTTP requests/responses, Sinatra is the ideal tool. If you need full integration and as much boilerplate as possible, Rails is the way to go.

What is Sinatra good for?

Sinatra is powerful enough to develop a functioning web application with just a single file. Sinatra is recognized to be a good way for novice developers to get started in web application development in Ruby and can help prepare in learning for larger frameworks, including Rails.

Is Ruby on Rails the best?

Ruby on Rails is the best open-source software to build web applications because Rails is the most manageable framework, and Ruby is a concise language. Additionally, you know that it is designed on the MVC architecture and possesses numerous benefits.

Why Ruby on Rails is still the best choice?

Some of the key factors which make companies choose Ruby on Rails are the gem of libraries, user-friendly code and well-controlled framework, cost-saving, offers frontend and backend solutions, uses MVC pattern and DRY that saves time and increases RoR developers' efficiency.


2 Answers

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 things 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.

like image 61
ehsanul Avatar answered Oct 06 '22 00:10

ehsanul


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.

like image 20
shingara Avatar answered Oct 05 '22 23:10

shingara