Recently I upgraded a project from Rails 3.2.x to 4.0.x... 4.0.x -&gt; 4.1.x... 4.1.x -&gt; 4.2.x<p>It was, and still is, a nightmare.<p>Technically speaking Rails itself upgraded in a reasonably straight-forward way, just follow the documentation (well and a few blog posts here and there for the things missed in the official docs). But all the additional Gems, and dependencies of those Gems (and so on) made the process excruciating. Many things broke in subtle ways at runtime (no compilation, so no compiler errors) and there was no clear path to upgrade; because whilst Rails&#x27; upgrade path is documented, there&#x27;s a plethora of Gems that also needed to be upgraded separately (some in contradictory manners).<p>You might wonder why I was so out of date in the first place. Two reasons:<p>1. I inherited this code-base.<p>2. I&#x27;ve attempted this (or a similar) upgrade about 5 other times in the past; spending hours upon hours debugging crashes (or just weird behaviour) with enormous stack-traces where my application&#x27;s own code often doesn&#x27;t even appear in the stack trace. It&#x27;s only now after making several failed (or rather overly time consuming) attempts I was able to come up with a &quot;workable&quot; upgrade path.<p>Gems dynamically generating methods left, right and centre, Gems replacing methods of seemingly unrelated classes (when they definitely do <i>not</i> need to), and crazy &quot;conventions&quot; that hide all the actual logic make debugging any sizeable Rails project a complete disaster. Don&#x27;t even get me started on the poor performance, much of which is to do with poorly designed Gems and not even the Ruby interpreter&#x27;s fault.<p>That said... I still turn to Rails when I want to get a new project (with users, database, login, admin etc.) up and running quickly. It&#x27;s a shame, but in terms of development speed, it&#x27;s hard to beat Ruby (and Rails). For small projects Sinatra is very solid, and Padrino is interesting - but honestly I can&#x27;t wait for the day I can move to a compiled language and still achieve this sort of development speed.