Utilizing Ruby in a Waffle web application
Waffle now provides built in support for JRuby.
This will allow you to easily write your Controllers in Ruby. The
integration is simple and straightforward, taking advantage of
functionality Waffle provides (without being a Rails clone).
A key feature of Waffle has always been its pluggable architecture. From
the beginning we believed that the default behavior defined by the
Waffle team might not be suitable for every situation. Therefor Waffle
was built following an Interface driven approach. Practically all of
Waffle's built-in functionality can easily be extended or replaced.
This design made integrating JRuby support quite easy. The next 3 steps
give a brief overview of how to integrate JRuby support into your
Waffle based applications.
Step 1 - configure Waffle to be "Ruby Aware"
Waffle avoids XML like the plague but we still need to have a web.xml for our
applications. This web.xml is where we can take advantage of Waffle's
pluggability. The following three context-param nodes need to be added
to your applications web.xml. This alerts Waffle that a few of its
foundational components should be replaced with alternate
implementations.
Step
2 - Your application's Registrar should extended
AbstractRubyAwareRegistrar.
This exposes a new registration method to
use within your Registrar ... registerRubyScript(String key, String
className). See the example below:
In
this example the Ruby class named 'FooBar' will be exposed as a
Controller under the name 'foobar' (e.g.
http://localhost:8080/jruby/foobar.waffle).
Step 3 - Write
your Ruby Controller class. Notice in the following example that your
class does not need to extend or include anything.
And
that is all the steps required to integrate JRuby within your Waffle
Applications.
Why are Ruby controllers desirable?
TODO