views:

277

answers:

7

Ruby is a great language. It's fast and flexible, and reminds me a lot of Python of which I'm also quite fond.

Ruby is also very popular, and has been for a few years now. Now that there are some "real world" projects and "rails-app businesses" out there, my question is this: What are the problems with Ruby? What are the things that is doesn't do particularly well? Are there any other products or technologies that have proven particularly difficult to deal with when integrating? Before embracing Ruby for mission critical apps, what are the things that should cause developers to pause and take caution?

Furthermore, has anyone compiled a list (blog-spam or otherwise) of some of the main pitfalls of production Ruby development and how to mitigate those risks?

EDIT:

By "real-world" I mean business world, as opposed to the academic world where there are no budgets and timelines.

+1  A: 

Ruby has a scalability issue, or at least that is the common conception.

See this and this.

Ngu Soon Hui
+6  A: 

There is an article titled Lessons Learned in Large Computations with Ruby, it's worth reading.

khelll
+1 this is exactly what I was looking for!
slf
A: 

Ruby is an interpreted language, so it can be up to 50 times slower executing code than Just-In-Time compiled languages like Java and C# (based on tests I've seen). Whether this is a problem depends on the workings of the site itself, as most sites tend to be limited far more by bandwidth and database time than by CPU time.

Kaleb Brasee
A: 

I hate the lack of unicode support in Ruby 1.8.

Geo
+2  A: 

Ruby isn't fast. It does have other qualities, but if your CPU is any sort of bottleneck (which in many webapps isn't really the case), then Ruby is not a suitable tool. The current "standard" Ruby doesn't even compile to bytecode (like Python does, for example), but interprets the AST instead, which probably puts the slowdown in the ballpark of 20-100. However, this is probably about to change (or at least get better) with Ruby 1.9. And JRuby, which is JVM-based as you surely know.

JesperE
+1  A: 

If Ruby's performance leaves something to be desired in your particular case, I recommend that you take a look at JRuby. It lets you compile vanilla Ruby code to JVM bytecode in the JIT or AOT fashion and gives access to Java's concurrency goodness and great app servers.

Max A.
+1 for mentioning concurrency
DaveParillo
+1  A: 

The speed of ruby isn't really it's main issue. The biggest problem is that it is single threaded. Max A.'s suggestion is good. JRuby does allow concurrency.

awt
Or, only uses one core of a processor.
The Wicked Flea