- Revision
- 587
- Author
- paul
- Date
- 2008-02-07 00:21:40 -0600 (Thu, 07 Feb 2008)
Log Message
words and style
Modified Paths
Diff
Modified: trunk/waffle-distribution/src/site/content/ruby-controllers.html (586 => 587)
--- trunk/waffle-distribution/src/site/content/ruby-controllers.html 2008-02-07 06:06:52 UTC (rev 586) +++ trunk/waffle-distribution/src/site/content/ruby-controllers.html 2008-02-07 06:21:40 UTC (rev 587) @@ -1,36 +1,77 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html><head> <title>Ruby Controllers</title></head> -<body>Ever wish you could utilize Ruby from your Java based web applications?<br /><br />Waffle, -a Java based Web Framework, now provides built in support for JRuby. +<body> + <h2>Utilizing Ruby in a Waffle web application</h2> +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). <br /><br />A -key feature of Waffle has always been its pluggable architecture. From +functionality Waffle provides (without being a Rails clone). +<br /><br /> +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.<br /><br />Step 1 - configure Waffle to be "Ruby Aware"<br /><br />Waffle -avoids XML like the plague but we still need to have a web.xml for our +Waffle based applications. +<br /><br /> +<span style="font-weight: bold;">Step 1</span> - configure Waffle to be "Ruby Aware" +<br /><br /> +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.<br /><pre><context-param><br /> <param-name>org.codehaus.waffle.context.ContextContainerFactory</param-name><br /> <param-value>org.codehaus.waffle.context.pico.RubyAwarePicoContextContainerFactory</param-value><br /></context-param></pre><pre><context-param><br /> <param-name>org.codehaus.waffle.bind.DataBinder</param-name><br /> <param-value>org.codehaus.waffle.bind.RubyDataBinder</param-value><br /></context-param></pre><pre><context-param><br /> <param-name>org.codehaus.waffle.controller.ControllerDefinitionFactory</param-name><br /> <param-value>org.codehaus.waffle.co ntroller.RubyControllerDefinitionFactory</param-value><br /></context-param></pre>Step -2 - Your application's Registrar should extended -AbstractRubyAwareRegistrar. This exposes a new registration method to +implementations. + +<textarea class="java:nogutter:nocontrols" name="code"><context-param> + <param-name>org.codehaus.waffle.context.ContextContainerFactory</param-name> + <param-value>org.codehaus.waffle.context.pico.RubyAwarePicoContextContainerFactory</param-value> +</context-param> +<context-param> + <param-name>org.codehaus.waffle.bind.DataBinder</param-name> + <param-value>org.codehaus.waffle.bind.RubyDataBinder</param-value> +</context-param> +<context-param> + <param-name>org.codehaus.waffle.controller.ControllerDefinitionFactory</param-name> + <param-value>org.codehaus.waffle.controller.RubyControllerDefinitionFactory</param-value> +</context-param></textarea> +<span style="font-weight: bold;">Step +2</span> - Your application's Registrar should extended +AbstractRubyAwareRegistrar. <br /><br /> +This exposes a new registration method to use within your Registrar ... registerRubyScript(String key, String -className). See the example below: <br /><pre>public class MyRegistrar extends AbstractRubyAwareRegistrar {<br /> public MyRegistrar(Registrar delegate) {<br /> super(delegate);<br /> } </pre><pre> @Override<br /> public void application() {<br /> registerRubyScript("foobar", "FooBar");<br /> }<br /> ...<br />}</pre>In +className). See the example below: + +<textarea class="java:nogutter:nocontrols" name="code">public class MyRegistrar extends AbstractRubyAwareRegistrar { + public MyRegistrar(Registrar delegate) { + super(delegate); + } + @Override + public void application() { + registerRubyScript("foobar", "FooBar"); + } + ... +}</textarea>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).<br /><br />Step 3 - Write +http://localhost:8080/jruby/foobar.waffle). +<br /><br /> +<span style="font-weight: bold;">Step 3</span> - Write your Ruby Controller class. Notice in the following example that your -class does not need to extend or include anything.<br /><pre>class FooBar<br /> def index # This is the default action<br /> "<h1>Hello World</h1>"<br /> end <br />end</pre>And +class does not need to extend or include anything. + +<textarea class="java:nogutter:nocontrols" name="code">class FooBar + def index # This is the default action + "<h1>Hello World</h1>" + end +end</textarea>And that is all the steps required to integrate JRuby within your Waffle -Applications. In my next post I will uncover details on how to access -registered components from your Ruby based controllers as well as -explain the built in conventions that make writing Ruby controllers so -easy.</body></html> \ No newline at end of file +Applications. + +<h3>Why are Ruby controllers desirable?</h3> +TODO +</body> +</html> \ No newline at end of file
To unsubscribe from this list please visit:
