It's because Rails is essentially a "batteries included" full stack framework which helps a startup focus on building a business and not on building technology infrastructure. Outside of Rails and Django, you're left to make a lot of decisions to get the same level of functionality before you can start building even an MVP.
Here's what you get out of the box with Rails:
1) Database schema management via Rails migrations which work great with mature RBMSs like Postgres and MySQL.
2) A solid ORM (ActiveRecord) which makes CRUD super easy and intuitive.
3) An active community with lots of open source libraries (gem) to do just about anything you want.
4) Highly productive ways to work with frontend (CoffeeScript) and backend (routing, controllers, active_record, etc).
5) Great documentation and ecosystem around it.
Contrast this with Go, Node, and other OSS ecosystems and you're often left to make a lot of the decisions on your own with immature libraries. Often to get to the same place, you'll be inventing a lot of your own infrastructure.
Node is probably the closest to approaching a "batteries included" status with the MEAN stack, but it's not quite there yet.
You can certainly get all of what Rails comes with out of the box on any stack, but unless you know it really well, there's a lot of decisions to be made. With a startup, the kind of analysis paralysis that often comes with technology decisions can really kill an idea in its early stages.
What does Rails do that Django doesn't? It seems like Python language is much easier to learn, with very clean syntax.
And Django's architecture is usually simple and easy to understand as well -- e.g. the official tutorials have you do a lot of things "by hand" before showing you parts of the Django standard library that automate them.
> It seems like Python language is much easier to learn, with very clean syntax.
This is the kind of stuff that used to start flamewars on Usenet ha. I respect your personal opinion, but just to put a different opinion (mine) out there: I find Python very opinionated and feels kind of "old" (like, when was the last time an OO language required you to provide a reference to the object as a parameter within the methods?).
Also in my opinion, even now in 2014 it is still not clear what version of Python should people use 2.x or 3?, given that there is still a bunch of code out there that is not compatible with 3 (granted, there are tools to convert that code, but that makes just an additional step to do compared to just using Ruby).
All in all, these are just opinions. Both of the stands are very respectable, but I wanted to put this out to compare with your opinion. I don't use Rails, even though I use ruby a lot, so on those frameworks I cannot comment.
I really can't speak to this as I don't really know Django.
But I personally didn't find Ruby hard to learn, and in fact I found it pretty intuitive.
The metaprogramming in Ruby allows for the creation of intuitive DSLs and APIs that are more difficult to achieve in other languages. While this can lead to a lot of the "Rails magic" that is often used without understanding, it can be highly productive for folks that really know it.
Beyond that, I honestly don't think there's much difference between the two. Certainly not enough of a difference to agonize over the choice.
The choice worth agonizing over more is whether you want a full framework or if you want to cobble together a toolkit of libraries to build your app. This choice exists regardless of language. I know many Python devs that won't touch Django and prefer Flask for everything.
I used to write .NET for a living and when I started working with my own ideas for a startup, I looked at both Django and Rails.
Python/Django had a very small community in my local area (Dallas, TX) while the local Rubyists were more plentiful, not to mention very welcoming. I got some early mentors that helped me get going and that got me to stick it out with Rails.
These days, I see more similarities than differences between Python and Ruby. It's like choosing between Vim and Emacs. Both sides have their value, but the bigger difference really exists between a text editor and an IDE like Eclipse or Visual Studio.
My advice is to try both, and see which one appeals to you more. Focus on it for a few months and find mentors to help you through it.
The harder choice would be to pick something like Node.js which is just starting to hit its stride, or Golang which is really just starting to pick up. Keep in mind, it's quite common for startups using Django or Rails to augment their stack with either Node.js or Go to solve certain problems that don't fit nicely into either Ruby or Python.
Thanks for your comments(for all involved in this thread).
For the moment I am living the UK. But also I have lived in France where I used symfony1.4. But now I am a bit lost trying to get my hand in different technologies. Thanks in advance for all.
Because for startup to survive it needs to take minimal time from paper napkin idea pitch to production deployment. And RoR has all the bells and whistles packaged together.
The quicker the time - the quicker VC's gets return on their investment.
Having said that, please note that ruby on rails is one of the slowest performing frameworks:
To understand Ruby, and why anyone including a startup wants to use it, you need to understand more about its founder, Matz. He is a truly amazing individual.
It's quick to get started with (and it's not PHP). It runs on *nix/Mac OS/Windows. Tools like scaffolding let you move on from simple CRUD stuff to business logic.
I'm not a rails dev but these seem like desirable properties, especially if you are working with limited resources to get a prototype or mvp going asap.
I think because it's easier to learn and require less code so startup may focus on product instead of code.
This should be true especially if you compare RoR to java technologies, but i'm working on a project where Grails was the requirement and i think Grails has a good future because thank to Groovy it requires a lot less code but has its foundation on java frameworks (hidden to the developer) which are very stable, solid and mature (and obviously complex!)
Well its as heavily used as other technologies I think it would be safe to say. RoR, Django, Synphony are some of the frameworks I am constantly hearing about for start ups. Just depends on the programming language preference.
Thanks. I was not aware of that feature yet. It would be nice if those pages (shared) are the ones google would list in the search results, but then quora needs its user sign-ups.
> Rails developers often use Macs. For some people, this means nothing. For others, this means the difference between getting hired or passed over. YMMV.
I must say this made me laugh. Is the tech scene getting too stupid?
When people fall in blind, biblical love with a particular technology, rational perspective goes out the window. Further, groupthink is something to be feared for it's failure of a subtle kind.
And, the vast majority of interview processes are rarely measurably accurate at preventing false positives AND false negatives, most tend to sacrifice the later for preventing the former.
I'd be more impressed if someone ran PC-BSD zfs on a homemade laptop.
(Disclaimer: written on a hackable non-Retina MBP, not that it matters. 2 SSDs + 16 GiB in 13")
What? I must say, this is the first I've heard of this trend. Personally, I might be a little querulous when interviewing a dev who used Windows by preference (though this would be irrelevant once they'd demonstrated or failed to demonstrate technical skill), but I've never worked with a hiring manager who'd discount a web dev who used a Linux-based operating system.
That may have been true a few years ago, but these days Rails is neither hip nor trendy. At this point, most startups are probably using it for the opposite: maturity, familiarity, and the number of developers on the market.
The runtime is also extremely bloated. To run one fairly simple web application with a handful of users, Rails uses well over 500 MB. I have no idea what it could possibly be doing with that much memory -- is it trying to make a separate object for every pixel? Startup for Ruby apps often takes over a minute.
Ruby is Rails. It's hard to find information about using Ruby for non-Rails projects. So as a beginner, not only do you have Ruby's weirdness to deal with, you're often fighting the number of moving parts in a modern web application.
Also, "magic." I haven't used Rails enough to know about this, but I hear "magic" is common, e.g. (I've heard) Rake uses some horrible hack to monkey patch the lexer or somesuch so it can have its own syntax. This kind of thing leads to code that's even harder to understand because you now have non-local dependencies. To be fair, Python also allows monkey patching, but also has a strong "don't-do-that" cultural norm.
A typical Rails instance will use 100 - 150mb, and does not take a minute to start up. Have you actually used Rails? I have several large projects and none have ever taken that long to startup.
I use Ruby for non Rails projects all the time and had no issue finding how to include Active Record and Action Mailer into a Ruby CLI application.
Here's what you get out of the box with Rails:
1) Database schema management via Rails migrations which work great with mature RBMSs like Postgres and MySQL.
2) A solid ORM (ActiveRecord) which makes CRUD super easy and intuitive.
3) An active community with lots of open source libraries (gem) to do just about anything you want.
4) Highly productive ways to work with frontend (CoffeeScript) and backend (routing, controllers, active_record, etc).
5) Great documentation and ecosystem around it.
Contrast this with Go, Node, and other OSS ecosystems and you're often left to make a lot of the decisions on your own with immature libraries. Often to get to the same place, you'll be inventing a lot of your own infrastructure.
Node is probably the closest to approaching a "batteries included" status with the MEAN stack, but it's not quite there yet.
You can certainly get all of what Rails comes with out of the box on any stack, but unless you know it really well, there's a lot of decisions to be made. With a startup, the kind of analysis paralysis that often comes with technology decisions can really kill an idea in its early stages.