Why did you switch from Django to Rails?

I’d like to hear from those of you who have switched from Django to Rails. I understand the appeal of Django (more straightforward to newbies and less chance of breakages during upgrades), but what makes you like Rails better than Django?

I learned Drupal before learning Rails. A Drupal newbie can get up to speed much faster than a Rails newbie, but Rails has so many capabilities that Drupal doesn’t have. Rails offers dynamic capability, automated testing, and the option of using version control (which makes it much easier to back up a site).

Personally, I went from rails to django to rails to django to rails again.

I think the main reason I like rails is ruby.

Once I understood the rails system and ecosystem, I chose it to be my default option for new apps.

One thing that the rails community tends to do is living on the edge. For me that didn’t work well. I do care about stability and well tested software. Now I don’t mind running on an older rails release as long as it’s doing what I want in a way that I like.

I also like how rails emphasises on testing and the testing frameworks that are available to it. Testing is not a priority for me, but I do it when I have the time because I know it will save me a lot of trouble eventually.

“less chance of breakages during upgrades”

This is one thing I admire that django devs strive to achieve. However, lately I’m finding rails to be more conservative with updates and cares more about backwards compatibility which I like.

The most effective thing that made me really like rails was that I taught myself not to care about running the latest version of rails. It’s ok to run an old-yet-supported version, which made my life so much easier. All gems run great, the version of rails is well tested and patched over and over again, and the limitations and bugs are usually known and documented online. This is why I think I will not move to rails 4.0 until 4.1 is released, and then move to 4.1 when 4.2 is released and so on.

Rails is a huge framework that does a lot of things and it does take time to learn not-so-obvious features and ways that rails works with. But once you get there, rails is a really REALLY hard-to-beat framework, IMHO.

PS. One thing that I love about django is how it integrates well with the database and actually uses its features like foreign keys and unique column values, where in rails these things are handled by rails itself and not the database (by default).

Jason Hsu, Android developer wrote in post #1108629:

I learned Drupal before learning Rails. A Drupal newbie can get up to
speed much faster than a Rails newbie, but Rails has so many
capabilities
that Drupal doesn't have. Rails offers dynamic capability, automated
testing, and the option of using version control (which makes it much
easier to back up a site).

I have not worked with either Django or Drupal, but have worked with a
good number of other software development frameworks. I simply wanted to
add that comparing Drupal to Rails is irrelevant. They are not the same
thing. Rails is a general purpose web development framework, whereas
Drupal is a Content Management System (CMS). While it is possible to
extend CMS systems with extension code that is still not a fair
comparison to a general purpose development kit like Rails.

This is akin to the the comparisons between Rails and PHP that you often
see. This is also not a fair comparison. PHP is programming language
where Rails is a development framework that happens to be written in
Ruby. It would be fair to compare PHP with Ruby.

Modern software is generally built in layers. The basic layers being the
underlying programming language (e.g. Ruby, PHP, Python), the
development framework (e.g. Rails, Django, CakePHP), then what I'll call
the application layer.

The application layer could be your application, as is likely the case
for a Rails application, or it could be a higher level abstraction like
a CMS (Drupal, Radiant CMS, etc.). A CMS might then allow for an even
higher extension or plugin layer. Every layer above the foundational
language is optional. For example Drupal may sit directly on top of PHP,
but that doesn't put it in the same category as something like Rails or
Django.