Ruby on Rails is excellent for most sites. Rails in a framework written with (or you can say "on" or "in") Ruby. Technically, you don't HAVE to know Ruby to code in Ruby on Rails, but that's like saying you don't have to know BASIC to code in Visual Basic..
It doesn't matter what you learn to code in. You just have to get the programming mentality into your head; The way programs work.
Almost all negative accounts of Ruby on Rails are from people who tried to port their legacy databases to Rails by hacking Rails' conventions to suit their old DB. For porting, I recommend just using PHP or anything else. Rails is great if you're starting from scratch and you don't break the Rails conventions (names of variables matter for instance).
The reason Rails has gotten such a good rep is, like stated above.. "It really distances you from the programming side." This is great because you don't have to re-invent the wheel. Everything you would need to build a Wiki, forum, social networking site, HotOrNot or what-have-you is already included. With PHP you'd have to develop all these things yourself from the ground up. This is due to architecture Rails uses, MVC.
This is the future. Ruby might not be everybody's language of choice (but it's so damn good), but you can still code using the MVC architecture in other languages. Django for Python, PHP-WAX, Grails (Groovy/Java), etc...
In practice, what MVC + all of Rails' functionality allow you to do is focus on designing the site, rather then coding stuff that get you up to the point where you can implement what you've designed. For example, I was writing a site like YouTube.. and I wanted to make a comments system, so I designed it on paper, took 15 mins to decide what fields go in the Comments database, and how it all relates to the logged in user and page being viewed.. and then after the design, I sat down to code it and I was literally done in 10 mins. Traditionally (say in PHP), I'd have to spend an hour coding functions to handle the database, I'd have to manually code in all the database relationships, (just an example, in practice you'd use 3rd party libs or your own old code) etc..
If you're coding websites from scratch, I suggest just picking up rails. I think every programmer should learn C or another low level programming language (even ASM) to really understand what goes on underneath all the layers of abstraction.