Ruby on Rails vs Django

Compare of features and capabilities of two popular frameworks
12 July 2017   2217
Ruby on Rails

Framework written in the Ruby programming language

Comparing frameworks is a hard task. Each platform is developed to solve specific problems and has its advantages and disadvantages. Therefore, the framework, unsuitable for some projects and programmers, can perfectly prove for others.

To develop web applications, many auxiliary tools have been created in different languages. The two most popular platforms are Rails, which uses Ruby, and Django, written in Python. Let's figure out what are the differences between them and for what tasks they are intended.

Used model

Both frameworks implement development using the MVC model. As follows from the deciphering of the abbreviation, this template includes three main blocks:

  1. Model. The main project databases are: users, posts, comments and the like.
  2. Performance. Visual display of information from the model.
  3. Controller. Intermediate link between the model and the view, which processes the requests of users and demonstrates the result of their actions.

There is no significant difference in the representation of these blocks in the frameworks. In Django, some templates are called differently, but they use same principles as Rails do.

Accessibility for beginners

Python's code is easy to read. It does not use complex syntax. Incomprehensible abbreviations, punctuation marks and special characters almost never occur. A beginner Django-developer will be able to write own and understand colleagues code.

Studying Rails is a bit longer proccess. It also doesn't have complicated syntax, but without learning it is hard to understand the code. However, having mastered the language, in the future it will be easier and more pleasant to work with: it is more flexible than Python, and Rails offers more useful tools for creating web applications than Django.

Efficiency

Django

High-level, free and open source Python Web framework.

Django fully realizes the concept of Python, which is primarily based on the simplicity of the syntax and the ability to write quality code quickly. However, the framework itself requires a good knowledge of its internal structure and available capabilities: for determining the MVC and URL routes, you will need to use regular expressions, and all classes and variables must be explicitly written.

Ruby on Rails offers more ready-made solutions. A lot of actions are automated, for example, inheritance of methods. The same goes for definitions - there is no need to add classes and variables manually, the framework will do it yourself. On the other hand, this approach alleviates the life of the programmer, but does not make it clear how the application is built in detail.

Performance

Frameworks are created on the basis of scripting interpreted languages, so there is no big difference in speed. However, Ruby is still slower than Python, which affects the work of Rails. However, it will be noticeable only in high-loaded projects. The rest, most likely, will not feel the difference.

Availability of libraries

Perhaps the only parameter by which Ruby on Rails is unconditionally better than Django - there are more plugins and extensions for this framework than for Python. But this does not mean that Django will have to work without libraries at all. They exist, and there are many of them. However, RoR is still able to provide more.

Support for language and community developers

Django documentation is more detailed and completed, it is easy to find the answer to any question that arises. Rails has a less detailed and slightly worse structured help system. However, this does not greatly complicate the work with the language - you can not call the RoR documentation incomplete.

Both Python and Rails has a large, fully-formed community. However, it is not the same. An important difference of the Django community is its multi-profile. The framework does not have well-defined boundaries of application and can be used to create any applications. Ruby on Rails is designed for web development, so there are very few discussions in its community related to solving other problems.

Final comparison of Ruby on Rails and Django

Django Ruby on Rails
Simple syntax More complicated syntax
High performance Lower performance
Mandatory class and variable definitions Automatic definition of classes and variables without explicit definition
Creating MVC and URL Routines with Regular Expressions Automatic creation of MVC and URL routes
Small number of libraries Significant selection of extensions
Detailed documentartion Less detailed documentation
Suitable for creating any applications Suitable for web development

What framework do you like more?

In your opinion, what technology is the most interesting and has bigger future? Django is Python based framework with high performance but small nimber of availabe libraries and Rails are the Ruby framework with lower performance but with bigger selection of extensions.

Ruby Meditation #22 in Dnipro

Meditation will be held on May 19, at Parle, Troitska St, 21 g, Dnipro
27 April 2018   536

On Ruby Meditation #22 you will hear about helpful tools and gems for building Slack apps, examples how to build functional architecture with ruby, which place takes Ruby on Rails among alternatives in 2018 and much more.

Come and get your portion of good mood, knowledge, professional communication and tasty lunch :)

Share your positive experience and best practices on this Ruby Meditation #22. If you have any work issues you cannot solve, our community will gladly help you to find the best way out in live discussion at Lightning talks session. You may also try yourself as a speaker with a short 5-10 mins talk. Fill in this form.

Programme

Anna Shcherbinina

Topic: "Docker + GPU. Not about mining."

Anna Shcherbinina
Anna Shcherbinina

Just before Christmas we launched a new body-measurement feature for our shapify.me project. A person goes into the 3D booth, gets scanned, and the body-measurements are calculated with the 3D scan data. We couldn't avoid using a GPU with these calculations.

How to install this branch of processing into our elegant scaling pipeline? When you're dealing with 3D scans you should remember two things: it's expensive and time-consuming. By the way, its workload fluctuates throughout the days. The easiest solution for us was to use Docker.

This speech is not about mining, but the most helpful articles for us were ones such as "Building your own mining farm". That's because we use quite a similar infrastructure.

GPU, Docker, scaling. What we achieved, where we failed, and what it became of it in the end is all included in my speech.
 

Anna Shcherbinina

Head of Web, Artec3D, Luxembourg

Kirill Shevchenko

Topic: "Building Slack apps with Ruby."

Kirill Shevchenko
Kirill Shevchenko

Overview of Slack APIs. Their features, restrictions, and bottlenecks. Which API is right for you? Helpful tools and gems for building Slack apps.
 

Kirill Shevchenko

Ruby/JS Developer

Valentine Ostakh

Topic: "Functional objects in Ruby: new horizons "

Valentine Ostakh
Valentine Ostakh

Overview of functional programming concepts.  What is functional objects. Examples how to build functional architecture with ruby.
 

Valentine Ostakh

Ruby/JS Developer

Leonid Shevtsov

Topic: "A polyglot's view of Ruby on Rails"

Leonid Shevtsov
Leonid Shevtsov

Nowadays, it's hip to switch from Rails to other languages and frameworks. Leonid, too, has abandoned Rails, played the field a bit, and has come around to occasionally but consistently picking Rails for some projects. What's the modern reason to use Rails? What are the strengths of Ruby and Rails and how to build upon them? When you should really jump to some other platform? Let's answer these questions in a true Ruby meditation.
 

Leonid Shevtsov

Systems Architect

Oleksii Dashkevych

Topic: "Project development - preparing hell dish together"

Oleksii Dashkevych
Oleksii Dashkevych

The recipe is averaged, because of many variations. We take some Ruby code and add Rails magic, Postgresql on top. Add Docker for viscosity. Then put this on AWS EBS pan and start frying. It's all roasted until burning deadlines and generously watered with bugs, serves to the customer. They start eating. Eat and whisper: “This is an awesome product!”. At the same time, he forehead is sweating. Kindly offer to fix bugs, but we refuse and put them in JIRA. Do I need to talk about what kind of feedback comes then? Tasks with such recipes, that double estimated.
 

Oleksii Dashkevych

Ruby/JS Developer

Thanks to the sponsors: Ruby Garage, Railsware, Aejis.

Students, who interested in ruby and have a willingness to visit Ruby Meditation, will get a discount 50% with promocode ‘student’. Please send your student ID’s scan to make your registration on the event faster.

If you are a parent of a small baby (0-3 years) on maternity leave and you want to learn more about ruby development you can get a special discount for a ticket with promo code ‘GrowWithYourKid’. Please send your document's scan or take it with you to approve your status and make your registration in the event faster.

If you have any questions or suggestions, don't hesitate to contact us via cell phone: 099 202 6308 or by email: rubymeditation@gmail.com

More details on website.

Buy a ticket