[Comment removed by author]
Rails gives you a lot of things bundled together. Depending on what you’re doing, it can be better to use less tightly coupled parts. Thus, if you’re staying in Ruby, Sinatra can be a much simpler choice if you’re focus is on REST API’s.
Don’t let the vocal minority fool you. Rails, like other established framework, has a lot of feature that makes it work just fine.
The defaults chosen by rails are chosen so we don’t waste our time making those decisions. There’s a few things I would like to add on the subject of choice.
Rails has choice. A lot of it. My projects are not built the same way as all others because I came to understand how rails works internally and made small adjustments on a per-project basis. No monkey-patching, just options that you can set. Many complaints I’ve seen about rails lack of choices came as a lack of knowledge of how rails work. If someone looks at rails for 2 weeks and feel like it has no choice, there’s nothing to do help them. They don’t take the time to appreciate the framework and they probably jump from 1 framework to another every 6 months.
Rails is a general framework, if you get to understand the way it works, it does wonder. But like any project of this scale, you need to learn it to make better use of it.
Sinatra is the exact opposite. You get to understand it very quickly and can probably understand the whole stack after 2 weeks playing with it. But you’ll end up limited and will start to add 3rd party gems very soon as there’s not a lot that comes with it.
Which do you prefer:
Being overwhelmed at first and slowly learn to appreciate how things are designed?
Do you want to feel at ease right away then need to find 3rd party gems (that are not always well-maintained/compatible with each other) and try to glue them all together?
You seemed to have chosen the first one (as I did), others have chosen the latter.
and near-English syntax
That’s what I dislike most about it. There’s too much magic. Certain things work because they’re named similarly (but not identically!), and there’s no code I can follow (other than deep in the Rails internals) that take me from point A to point B. Half the time I’m wondering whether I’m actually writing code or using a DSL.