I understand that if I was building a database, or a traffic control system or something with lots of concurrency, it's useful.
But if I'm building a web app, the appserver and database handle the concurrency issues for me.
So I haven't quite understood why Clojure is so important.
Do you like Lisp? If you like Lisp, Clojure is its most pragmatic dialect. I personally enjoy the simple, consistent syntax and functional programming style that Ruby lacks.
Note that while Clojure was designed with concurrency in mind, it's also good at other things — like Ruby, it's a general purpose language. However, you're going to be more productive writing a web app with Ruby right now because there are no libraries for Clojure that are as robust as Rails. That may change as Clojure's ecosystem grows.
If part of what your web app does involves heavy duty data processing then it could be much more interesting. Flightcaster (Ruby or JRuby, I forget which) on Rails front end, Clojure doing all the hardcore machine learning data crunching on the back end.
Of course being a compiled language, odds are you can write faster code in clojure in at least comparable number of lines of code to ruby, with the speed of the jvm. So if you think your site will see much traffic that might be valuable to you as well.
JRuby
faster code in clojure ... with the speed of the jvm.
Something irks me about this argument :-)Also, as far as productivity goes, I don't see clojure providing any significant short-term productivity gains over existing scripting languages like Python and Ruby. The use cases for macros beyond lazy evaluation appear few and far between in practice, and most of us get along fine in practice without persistent heterogeneous immutable data structures and lazy order evaluation.
So, unless you enjoy learning languages for fun or find yourself thinking more clearly using a functional approach, and there appear to be many people on this site who fit into one or both of the above categories, you are just fine sticking with Ruby.
Most of the benchmarks that I have seen that were legitimately 10x the time of Java were using unadorned Clojure on Clojure data structures... of course it is slower, the machine is doing a lot more for you.
And it is well and good that this is the case, because the purpose of Clojure is not to make that tight loop really fast; it is to get the logic of your program correct and avoid a lot of the subtle bugs that can happen. Concurrency has many advantages above and beyond parallelism.
As far as getting along without macros and lazy evaluation and heterogeneous immutable data structures, I will say that for a long time we got along 'just fine' without garbage collection; but now it is a feature of a large subset of languages (to the extent that Google has now added it to C).
With lisp/macros you can have similar power but with structure and logic.
Look at the difference between ERB templates and the beautiful templating language in compojure for example. It really kicks the llamas ass.
Easy concurrency is a reason, certainly. You can build applications without having to worry too much about locks and such. You can utilize in language data structures for concurrency rather than worrying about a database handle (if you have, for example, data you don't need in a database, there is no reason to use one...)
Functional programming is another reason, programs are easier to reason about if you limit state to a few key places in the program.
Macros are a good reason too, instead of working around deficiencies in a language, just implement a macro. I used erlang Jinterface to implement an erlang-style message passing library last weekend. (With process spawning semantics and blocking receive, I haven't done pattern matching.. yet).
Java libraries are another reason to use it. You have full access to Java libraries like Jetty and Jinterface and others, and they pretty much blend into the language.
I have no idea about the relative merits of Ruby and do not wish to offer my reply as a challenge; 'i bet it can't do this or that'.
But Clojure certainly offers some interesting solutions to common problems in code (verbosity, clarity, libraries, concurrency, reliability).
Edit: Is there an 'easy' way to create OSGi bundles with Clojure, maybe some sort of Maven plugin?