The first missing part: A language with a sane syntax. For some examples of the multitude of ways in which Ruby syntax is awful, see [1].<p>The second missing part: Ruby is Rails. Trying to learn Ruby <i>at the same time</i> as a modern web framework with all its moving parts? Forget it.<p>The third missing part: Tutorials. Okay, I haven't done a rant on this. Google rails tutorial. The first helpful result I get [2], I scroll down. The first meat is "Setting the application home page". I see this:<p><pre><code> Blog::Application.routes.draw do
get "welcome/index"
</code></pre>
Huh? "This is your application's routing file which holds entries in a special DSL (domain-specific language) that tells Rails how to connect incoming requests to controllers and actions." So it's not even Ruby or some recognized Web glue language like HTML or CSS; it's some domain-specific language? Okay, I totally don't get it, so as suggested, for more details, I should refer to "Rails Routing from the Outside In" [3].<p>This is even more confusing. It says you should do something like this:<p><pre><code> get '/patients/:id', to: 'patients#show'
</code></pre>
Huh? What's the deal with the colons and octothorpe? I can guess colon is the signifier for an ID in the URL, but why the pound sign for #show?<p><pre><code> get '/patients/:id', to: 'patients#show', as: 'patient'
</code></pre>
And what's the deal with the colons?<p>I could go on and on. I'm sure that with a few hours of pain and frustration, I would be able to figure out exactly all the oddities of Ruby syntax, or the template language, or the DSL whatever, and understand this example well enough to extend it.<p>But that's not the point. The point is that, because I have to spend those hours, it means that Ruby/Rails is poorly designed. In Django, by contrast, things are almost always simple and obvious.<p>[1] <a href="https://news.ycombinator.com/item?id=5872899" rel="nofollow">https://news.ycombinator.com/item?id=5872899</a><p>[2] <a href="http://guides.rubyonrails.org/getting_started.html" rel="nofollow">http://guides.rubyonrails.org/getting_started.html</a><p>[3] <a href="http://guides.rubyonrails.org/routing.html" rel="nofollow">http://guides.rubyonrails.org/routing.html</a>