

A Rails like framework for Clojure. - macmac
http://github.com/macourtney/Conjure

======
henning
All these Rails clones! They think they can just ape Rails' idioms and then
they'll have the power of Ruby's _metaprogramming_ at their disposal and --
oh, wait.

~~~
sunkencity
rails is a pretty mature framework these days, and it's got tons of plugins
that are actually easy to use. It's a pretty steep road to get something up to
those standards. When I need something that has everything already neatly
solved and ready for cranking out stuff fast -- I always chose rails.

I'm currently trying to learn clojure and enjoying it immensely. It's a lot
like ruby (powerful and fun) but with easier syntax and it's way faster.
Looking forward to read through the conjure source.

One thing that bugs me with most of the clojure web frameworks that I have
looked at is that they a. use ant instead of maven and b. don't provide a
canned method to generate a war file. I don't like the advice "just leave a
screen with slime and emacs running on your server". It runs on the JVM for
crying out loud -- a little more enterprise is appropriate :)

~~~
arohner
"just leave a screen with slime and emacs running on your server"

Another way to do it is just load the swank jar on your server (the server
side of slime). In your server startup, include a call to (start-swank). Then
you can connect via slime whenever you want using M-x slime-connect, and you
don't need emacs + screen to stay running.

I've only learned the JVM as part of learning clojure. What advantages would a
.war provide?

~~~
sunkencity
Advantages:

Easy to get a server running: just install tomcat or jetty on your production
machine, sftp the war file and it automatically deploys.

Init.d scripts are tricky to write and get right, by using a tested script
from a distro things tend to work out of the box.

Monitoring -- easy to hook in some monitoring script that can reboot tomcat or
jetty should the server stop responding.

Techops generally know how to deploy a .war file -- I would not feel
comfortable telling someone to learn lisp just to deploy a webapp.

pretty interesting with swank -- need to look into that.

~~~
arohner
The war file and swank shouldn't be mutually exclusive, I just haven't
bothered with a .war because by default Compojure starts Jetty itself, and I
didn't want to bother with compiling the .war and restarting the server to
test changes. Once you get addicted to reloading code from your IDE, you don't
want to go back. :-)

------
masklinn
Rails is a Ruby framework, Django is a Python framework. Each one uses the
strengths and idioms of its implementation language to be and become better.

These ports don't make sense. Clojure is not Ruby, there will always be a
disconnect between Clojure as a language and a framework ported from Ruby.

~~~
macmac
...or Rails in Clojure will turn out even better than the original. It is not
as if Clojure lacks the meta-programming power has made Ruby Rails so elegant.

------
devin
<http://github.com/danlarkin/madison> is another interesting project. I
believe the intent is to port Django to Clojure.

~~~
macmac
...but last commit was in April.

~~~
runevault
Yeah, Dan hasn't touched it much last I saw. I was interested early on as I
had spent a bit of time in Django (not a ton) but was more interested in
Clojure web dev. But due to it's lack of movement I haven't bothered.

I may take a look at this one but I dunno, I don't have the ties to Rails to
give that appeal.

------
alrex021
Conjure seems to be in early dev stage. It'd be a good idea for it to be
packaged with bleeding edge of the clojure rt instead of 1.0.

None the less, it looks very promising.

------
drcode
Although Clojure is an excellent tool, keep in mind it is still in early
development.

It can be used to publish simple websites pretty elegantly, but for now it is
relatively "low level"- I would say it still has a ways to go before being
"Rails like."

~~~
mattrepl
Aside from having access to all the Java web frameworks, Clojure has Compojure
and Conjure on the higher level and Ring (equivalent to Python's WSGI and
Ruby's Rack) for lower level.

I wouldn't discount Clojure as not ready for complicated web applications
based on it's young age; Java servlets can be written in Clojure. Not that
Java servlets are great, but they are widely used for non-trivial web sites.

Clojure is great at removing the ugliness of some Java APIs, I recall that
Compojure is built atop servlets.

~~~
weavejester
Compojure is built on top of Ring, but can wrap a Ring "handler" function in a
Java servlet.

This functionality has been merged into Ring 0.1, so you may now be able to
wrap a Conjure application into a Java servlet as well.

