Skip to content

stilkov/jruby-rails-clojure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JRuby/Rails/Clojure Integration

A very simple example showing how to integrate JRuby, Rails and Clojure:

There are two clojure source files in app/clojure: utilities/support.clj and utilities/ClojureTest.clj. I ended up with these as I played around with namespaces. support.clj simply defines a single function in the utilities.support namespace.

ClojureTest.clj references the clojure.support namespace and defines a namespace utilities.ClojureTest. This is mapped (via genclass) to a Java class ClojureTest in the utilities namespace. ClojureTest exposes a single function (stringLength); think of this as the API your Clojure lib exposes to the JRuby world.

There's a simple rake task in lib/tasks/clojure.rake that has two targets: rake clojure:compile will compile the stuff in app/clojure to the tmp/target/classes directory. rake clojure:jar (which depends on clojure:compile) creates a jar file in the lib directory for each top-level directory in app/clojure (e.g. utilities.jar)

In the controller clojure_test_controller.rb, the function ClojureTest::string_length is invoked. If Rails can't resolve a module, it ends up looking for a .rb file in lib that has the corresponding name in lower case and with underscores. lib/clojure_test.rb simply does a java_import to create a module that contains the functions defined in the ClojureTest class.

Interesting things that one might do:

  • Define more rake tasks for Clojure, e.g. for a REPL, for Swank etc. This should probably be a separate project.
  • Show some more sample interactions, e.g. send-off to an agent from within a controller or access to a Clojure persistent data structure from JRuby
  • Show how to access JRuby from Clojure, e.g. to access models

About

Sample project to show integration of JRuby, Rails and Clojure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published