<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>PaulBarry.com - Ruby on Struts</title>
  <subtitle type="html">My thoughts, ideas, questions and concerns on technology, sports, music and life</subtitle>
  <id>tag:paulbarry.com,2007:Paulbarry.com</id>
  <generator uri="http://www.paulbarry.com" version="3.0">PaulBarry.com</generator>
  <link href="http://paulbarry.com/xml/atom/article/4915/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts" rel="alternate" type="text/html"/>

  <updated>2009-01-05T22:31:40-05:00</updated>
  <entry>
    <author>
      <name>Paul Barry</name>
      <email>mail@paulbarry.com</email>
    </author>
    <id>urn:uuid:15a5b377-2821-402e-a764-0d0f6e4387b7</id>

    <published>2008-09-06T00:37:24-04:00</published>
    <updated>2008-09-06T00:37:24-04:00</updated>
    <title type="html">Ruby on Struts</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts" rel="alternate" type="text/html"/>

    <category term="technology" scheme="http://paulbarry.com/articles/category/technology" label="Technology"/>
        <category term="Rails" scheme="http://paulbarry.com/articles/tag/rails"/>
    <category term="Ruby" scheme="http://paulbarry.com/articles/tag/ruby"/>
    <category term="REST" scheme="http://paulbarry.com/articles/tag/rest"/>
        <summary type="html">&lt;p&gt;Once upon a time, there was a web MVC framework called &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts&lt;/a&gt;.  Struts was one of the original catalysts of web frameworks based on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC pattern&lt;/a&gt;, but it was written in &lt;a href=&quot;http://java.sun.com&quot;&gt;Java&lt;/a&gt; and required copious amounts of &lt;a href=&quot;http://en.wikipedia.org/wiki/XML&quot;&gt;XML&lt;/a&gt; to configure your application.  One of the many things defined in the XML were the &quot;&lt;a href=&quot;http://struts.apache.org/1.x/userGuide/building_controller.html#actionmapping&quot;&gt;Action Mappings&lt;/a&gt;&quot;.  An Action Mapping essentially mapped a specific URL pattern to a specific Java class that would be responsible for handling that request.&lt;/p&gt;

&lt;p&gt;Then came &lt;a href=&quot;http://rubyonrails.com&quot;&gt;Ruby on Rails&lt;/a&gt;, which eliminated the need for these XML configuration files by using &lt;a href=&quot;http://en.wikipedia.org/wiki/Convention_over_Configuration&quot;&gt;Convention Over Configuration&lt;/a&gt;.  The way this works in Rails is that if a request is sent to the url &lt;code&gt;/users/new&lt;/code&gt;, Rails will call the &lt;code&gt;new&lt;/code&gt; method of the &lt;code&gt;UsersController&lt;/code&gt; class to handle the request.  Rails has a feature called routing that is used to map unconventional url patterns to specific controller actions.  Then came RESTful Rails and the convention over configuration was gone.&lt;/p&gt;

&lt;p&gt;With RESTful Rails, the request path simply represents what you want to perform an operation on, the Resource, and the HTTP method specifies what you want to do.  This all makes sense, but one problem is that RESTful urls do not conform to the url convention.  This means every action must be defined in the routing.  A shortcut was added to the routing to allow one expression to define the 7 typical methods the controller for a resource will have, but any additional actions must be explicitly defined.&lt;/p&gt;

&lt;p&gt;I&apos;ve been recently working with an experienced Java developer with some familiarity Rails.  He was confused by the way RESTful routing works and what paths the named route methods would generate.  When he asked what benefits all this provides over the original &lt;code&gt;/controller/action/id&lt;/code&gt; pattern, where only non-standard routes had to be mapped, I struggled to find any.  I realized that I was doing this just because it was now the &quot;Rails Way&quot;.  He said this reminds him of Struts, and after some arguing and thinking about it, I realized he was right.&lt;/p&gt;

&lt;p&gt;So it seemed unbelievably coincidental that we both found ourselves together today in a talk titled &lt;a href=&quot;http://lonestarrubyconf.com/speakers.html#uw&quot;&gt;Unconvental Wisdom by Bruce Tate&lt;/a&gt;.  In today&apos;s talk, Bruce pointed out that RESTful Rails adds complexity to Rails, which makes it harder to explain how Rails works to newcomers to Rails.  I&apos;m very interested to see how this talk is received by the Rails community, so if you weren&apos;t at the talk today, look for it on &lt;a href=&quot;http://confreaks.com&quot;&gt;Confreaks&lt;/a&gt; in the next few weeks.&lt;/p&gt;

&lt;p&gt;So looking back on RESTful Rails applications that I&apos;ve developed, if they reach even a level of medium complexity, you end up with 50 lines or so in the &lt;code&gt;routes.rb&lt;/code&gt;, with at least a handful of nested and custom routes, in addition to all of the resources.  Imagine this as the admin interface for a simple blog:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;map.namespace(:admin) do |admin| 
  admin.resources :articles, :has_many =&amp;gt; :comments, :member =&amp;gt; { :publish =&amp;gt; :post }
  admin.resources :categories, :has_many =&amp;gt; :articles
  admin.resources :comments, :belongs_to =&amp;gt; :article
  admin.resources :tags, :has_many =&amp;gt; :articles
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you are an experienced Rails developer, you can decipher this right away.  But is this really easy understand?  Or wouldn&apos;t convention over configuration be easier:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;map.connect &quot;/admin/:controller/:action/:id&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And what about named routes like &lt;code&gt;new_admin_article_comment_path(@article)&lt;/code&gt;?  Is that really more clear than &lt;code&gt;admin_path(&quot;/comments/new&quot;, :article_id =&amp;gt; @article)&quot;&lt;/code&gt;?  Do you really care if the urls are &lt;code&gt;/comments/new?article_id=1&lt;/code&gt; or &lt;code&gt;/articles/1/comments&lt;/code&gt;?  Maybe I missing something, but I&apos;m starting to like the sound of idea of having almost nothing in my routes and not calling dynamically generated methods everywhere to just to build simple paths.  After all, no code is faster than no code. &lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;Once upon a time, there was a web MVC framework called &lt;a href=&quot;http://struts.apache.org&quot;&gt;Struts&lt;/a&gt;.  Struts was one of the original catalysts of web frameworks based on the &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC pattern&lt;/a&gt;, but it was written in &lt;a href=&quot;http://java.sun.com&quot;&gt;Java&lt;/a&gt; and required copious amounts of &lt;a href=&quot;http://en.wikipedia.org/wiki/XML&quot;&gt;XML&lt;/a&gt; to configure your application.  One of the many things defined in the XML were the &quot;&lt;a href=&quot;http://struts.apache.org/1.x/userGuide/building_controller.html#actionmapping&quot;&gt;Action Mappings&lt;/a&gt;&quot;.  An Action Mapping essentially mapped a specific URL pattern to a specific Java class that would be responsible for handling that request.&lt;/p&gt;

&lt;p&gt;Then came &lt;a href=&quot;http://rubyonrails.com&quot;&gt;Ruby on Rails&lt;/a&gt;, which eliminated the need for these XML configuration files by using &lt;a href=&quot;http://en.wikipedia.org/wiki/Convention_over_Configuration&quot;&gt;Convention Over Configuration&lt;/a&gt;.  The way this works in Rails is that if a request is sent to the url &lt;code&gt;/users/new&lt;/code&gt;, Rails will call the &lt;code&gt;new&lt;/code&gt; method of the &lt;code&gt;UsersController&lt;/code&gt; class to handle the request.  Rails has a feature called routing that is used to map unconventional url patterns to specific controller actions.  Then came RESTful Rails and the convention over configuration was gone.&lt;/p&gt;

&lt;p&gt;With RESTful Rails, the request path simply represents what you want to perform an operation on, the Resource, and the HTTP method specifies what you want to do.  This all makes sense, but one problem is that RESTful urls do not conform to the url convention.  This means every action must be defined in the routing.  A shortcut was added to the routing to allow one expression to define the 7 typical methods the controller for a resource will have, but any additional actions must be explicitly defined.&lt;/p&gt;

&lt;p&gt;I&apos;ve been recently working with an experienced Java developer with some familiarity Rails.  He was confused by the way RESTful routing works and what paths the named route methods would generate.  When he asked what benefits all this provides over the original &lt;code&gt;/controller/action/id&lt;/code&gt; pattern, where only non-standard routes had to be mapped, I struggled to find any.  I realized that I was doing this just because it was now the &quot;Rails Way&quot;.  He said this reminds him of Struts, and after some arguing and thinking about it, I realized he was right.&lt;/p&gt;

&lt;p&gt;So it seemed unbelievably coincidental that we both found ourselves together today in a talk titled &lt;a href=&quot;http://lonestarrubyconf.com/speakers.html#uw&quot;&gt;Unconvental Wisdom by Bruce Tate&lt;/a&gt;.  In today&apos;s talk, Bruce pointed out that RESTful Rails adds complexity to Rails, which makes it harder to explain how Rails works to newcomers to Rails.  I&apos;m very interested to see how this talk is received by the Rails community, so if you weren&apos;t at the talk today, look for it on &lt;a href=&quot;http://confreaks.com&quot;&gt;Confreaks&lt;/a&gt; in the next few weeks.&lt;/p&gt;

&lt;p&gt;So looking back on RESTful Rails applications that I&apos;ve developed, if they reach even a level of medium complexity, you end up with 50 lines or so in the &lt;code&gt;routes.rb&lt;/code&gt;, with at least a handful of nested and custom routes, in addition to all of the resources.  Imagine this as the admin interface for a simple blog:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;map.namespace(:admin) do |admin| 
  admin.resources :articles, :has_many =&amp;gt; :comments, :member =&amp;gt; { :publish =&amp;gt; :post }
  admin.resources :categories, :has_many =&amp;gt; :articles
  admin.resources :comments, :belongs_to =&amp;gt; :article
  admin.resources :tags, :has_many =&amp;gt; :articles
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you are an experienced Rails developer, you can decipher this right away.  But is this really easy understand?  Or wouldn&apos;t convention over configuration be easier:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;map.connect &quot;/admin/:controller/:action/:id&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And what about named routes like &lt;code&gt;new_admin_article_comment_path(@article)&lt;/code&gt;?  Is that really more clear than &lt;code&gt;admin_path(&quot;/comments/new&quot;, :article_id =&amp;gt; @article)&quot;&lt;/code&gt;?  Do you really care if the urls are &lt;code&gt;/comments/new?article_id=1&lt;/code&gt; or &lt;code&gt;/articles/1/comments&lt;/code&gt;?  Maybe I missing something, but I&apos;m starting to like the sound of idea of having almost nothing in my routes and not calling dynamically generated methods everywhere to just to build simple paths.  After all, no code is faster than no code. &lt;/p&gt;
</content>
  </entry>
  <entry>
    <author>
      <name>Thibaud Guillaume-Gentil</name>
    </author>
    <id>urn:uuid:d41adc1e-b56f-4c6a-bb5e-f117920a5c5b</id>
    <published>2008-09-06T03:12:47-04:00</published>
    <updated>2008-09-06T03:12:47-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Thibaud Guillaume-Gentil</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5179" rel="alternate" type="text/html"/>
    <content type="html">Hi,&lt;br/&gt;&lt;br/&gt;for me admin_path(&amp;quot;/comments/new&amp;quot;, :article_id =&amp;gt; @article) isn&apos;t DRY, if someday you want modify the url &apos;comments/new&apos; you&apos;re screwed (it&apos;s not the case with named routes, where you can just redefine map.new_admin_article_comment). And I really care if the urls are /comments/new?article_id=1 or /articles/1/comments, it&apos;s  very very important :-)</content>
  </entry>
  <entry>
    <author>
      <name>Dmytro Shteflyuk</name>
    </author>
    <id>urn:uuid:c063a27d-1152-48c0-9851-9452763a9d56</id>
    <published>2008-09-06T03:53:44-04:00</published>
    <updated>2008-09-06T03:53:44-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Dmytro Shteflyuk</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5180" rel="alternate" type="text/html"/>
    <content type="html">+1, it does matter what URL do you have. I don&apos;t like /comments/new?article_id=1, it&apos;s ugly&lt;br/&gt;&lt;br/&gt;In your blog you have URLs like http://paulbarry.com/articles/{year}/{month}/{day}/{permalink}&lt;br/&gt;Why? Why not http://paulbarry.com/articles?id=111 ?&lt;br/&gt;&lt;br/&gt;URLs looks better without question marks, believe me. Also I agree with Thibaud, when you decide to change URLs, you will have to change them in a single place.</content>
  </entry>
  <entry>
    <author>
      <name>Daniel Lyons</name>
    </author>
    <id>urn:uuid:e4640d41-13a3-43cb-82bd-aee214f17f22</id>
    <published>2008-09-06T04:02:18-04:00</published>
    <updated>2008-09-06T04:02:18-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Daniel Lyons</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5181" rel="alternate" type="text/html"/>
    <content type="html">In February I was busy trying to understand and convert a coworker of mine to RESTful Rails, because I wanted to stay at the top of the curve and keep track of these things. And besides, RESTful Rails seemed to provide a number of important benefits.&lt;br/&gt;&lt;br/&gt;I became familiar with make_resourceful and started using that in my projects. I was really pleased, because I could replace ~100 line controllers with ~20 line controllers, nevermind that I always wound up overriding current_objects and certain other methods to get it to do what I want.&lt;br/&gt;&lt;br/&gt;This past week I found myself working on an old Rails 1.2 project, maintaining some things and I needed to add an RSS feed. I started putting all that RESTful stuff into the controller and the routing and then I thought, what the hell, I&apos;ll just make a little method and a little template. Twenty minutes later, it&apos;s completely done and linked to from the main template. How cool was that! And then I sat there thinking, wait a second, have I ever really *used* the fact that my RESTful methods could handle different &amp;quot;types&amp;quot; of responses? Or have I only ever used it to handle HTML this whole time?&lt;br/&gt;&lt;br/&gt;So I think the one case where it would really have been handy to have been using REST came and left. I used respond_to inside a regular method and there still are no resources in this application. Reading this blog entry certainly makes me wonder. I had been thinking about how I need to spend some time modernizing this application, how I should go through and stick make_resourceful inside all of the controllers and really fatten up that routing. And yeah, it&apos;s probably a savings to remove 80 lines of code from 10 or 12 controllers and add 50 to the routing. But what about all those links? My app is going to have deeply nested resources. Already in another app, I had things like edit_admin_user_role_permission_path. Is that really cleaner than :controller =&amp;gt; &apos;/permissions&apos;?&lt;br/&gt;&lt;br/&gt;So your article really resonates with me. REST is great if you&apos;re building an API, but aren&apos;t we mostly still building websites? How much more work should we be willing to do? And why do we do things that are &amp;quot;correct&amp;quot; when they make other things so much worse?&lt;br/&gt;&lt;br/&gt;I had been investigating the other Ruby frameworks and discounting some of them because of a general lack of REST, but maybe REST isn&apos;t what I need. And I had encountered an error relating to REST (I had an ID with a period in the name and it wanted to break that into an :id and a :format parameter). Maybe I&apos;ll just scrap REST for the time being and forget about the pretty URLs. Or make the pretty URLs without using map.resource.</content>
  </entry>
  <entry>
    <author>
      <name>Jebw</name>
    </author>
    <id>urn:uuid:0e4e5766-9661-4aff-8533-51843210aee6</id>
    <published>2008-09-06T05:39:17-04:00</published>
    <updated>2008-09-06T05:39:17-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Jebw</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5182" rel="alternate" type="text/html"/>
    <content type="html">I spent most of my time working on an Rails app originally developed for 1.2, and hence theres no RESTfulness. At various times on other projects I&apos;ve tried to use the REST style but always come back to it seeming more complicated than my companies &apos;old&apos; rails app. I came to rails originally because I liked the simplicity and neatness - REST definately seems to take some of this away.&lt;br/&gt;&lt;br/&gt;As for pretty URLs, this easily is solvable for the important user facing URLs in the routes.rb file - and you get the URLs you want then as well.</content>
  </entry>
  <entry>
    <author>
      <name>Bob McWhirter</name>
    </author>
    <id>urn:uuid:5cc0e17d-d924-405b-a563-09e207dc76f4</id>
    <published>2008-09-06T09:23:29-04:00</published>
    <updated>2008-09-06T09:23:29-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Bob McWhirter</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5183" rel="alternate" type="text/html"/>
    <content type="html">The nice thing about the RESTful routing is once you start using polymorphic URL helpers, and liberal application of to_s and to_param, along with nested resources.  You can end up with some wickedly beautiful URLs, along with nice and clean template code generating your links.&lt;br/&gt;&lt;br/&gt;Suddenly, your links are only&lt;br/&gt;&lt;br/&gt;&amp;lt;%= link_to comment, [ article, comment ] %&amp;gt;&lt;br/&gt;&lt;br/&gt;That&apos;ll use to_s for the text of the link, and it&apos;ll find the route for a the article, and then its nested comment.  &lt;br/&gt;&lt;br/&gt;You don&apos;t have to know or care about the names of your routes. &lt;br/&gt;&lt;br/&gt;Same goes for the RESTful actions.  To delete a comment, you do something similar to&lt;br/&gt;&lt;br/&gt;&amp;lt;%= link_to comment, [ article, comment ], :method=&amp;gt;:delete %&amp;gt;&lt;br/&gt;&lt;br/&gt;Nice and smooth.</content>
  </entry>
  <entry>
    <author>
      <name>Paul Barry</name>
    </author>
    <id>urn:uuid:6cc228d8-cb3e-47f1-8392-3aef782fc8b0</id>
    <published>2008-09-06T09:51:19-04:00</published>
    <updated>2008-09-06T09:51:19-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Paul Barry</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5184" rel="alternate" type="text/html"/>
    <content type="html">@Jebw&lt;br/&gt;&lt;br/&gt;I agree, use routing to define pretty URLs for public facing things, but depending on what your app does, there may be lots of URLs that have no benefit to being pretty, because they are only seen by administrative users.</content>
  </entry>
  <entry>
    <author>
      <name>Ethan Vizitei</name>
    </author>
    <id>urn:uuid:57e06399-1d52-4b14-a5c0-19baa3ed95a5</id>
    <published>2008-09-06T11:30:23-04:00</published>
    <updated>2008-09-06T11:30:23-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Ethan Vizitei</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5185" rel="alternate" type="text/html"/>
    <content type="html">I&apos;ll admit that using RESTful controllers does fatten up your routing a bit, but I think that ultimately this makes the entire app come closer to &amp;quot;convention over configuration&amp;quot;, not farther away from, because in all your controllers you have (mostly) the same set of methods and you can depend on them all to do the same thing to the resources they are in charge of.  Maybe there is a bit more of a learning curve (in fact, I know there is), and I&apos;m not saying you want to use it for everything (I have several ajax-y actions in my app that I don&apos;t think really relate to resources, and so I use a traditional rails route for them), but ultimately I think the extra layer is a net gain.</content>
  </entry>
  <entry>
    <author>
      <name>Evan Light</name>
    </author>
    <id>urn:uuid:04571f72-acb4-4816-bf89-8bcbd5a4d6e2</id>
    <published>2008-09-06T21:59:44-04:00</published>
    <updated>2008-09-06T21:59:44-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Evan Light</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5188" rel="alternate" type="text/html"/>
    <content type="html">Ironic.  I had the same reaction to RESTful Rails but only as a found the routing annoying when I first saw it.  Glad that you captured this&lt;br/&gt;&lt;br/&gt;BTW, your blog hates iPhone </content>
  </entry>
  <entry>
    <author>
      <name>Evan Light</name>
    </author>
    <id>urn:uuid:e0bb6669-a1b5-4ac5-9258-ebd177644834</id>
    <published>2008-09-06T22:01:29-04:00</published>
    <updated>2008-09-06T22:01:29-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Evan Light</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5189" rel="alternate" type="text/html"/>
    <content type="html">NM.  It hates NetNewsWire on iPhone.</content>
  </entry>
  <entry>
    <author>
      <name>John Trupiano</name>
    </author>
    <id>urn:uuid:588eb73a-e465-4974-8f8c-e9f3cdcf05ef</id>
    <published>2008-09-07T10:58:57-04:00</published>
    <updated>2008-09-07T10:58:57-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by John Trupiano</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5190" rel="alternate" type="text/html"/>
    <content type="html">Hey Paul, your article really resonated with me.  As previous commenters have mentioned, RESTful routes are great when you need a standard resource-based API (which we commonly do as we do a lot of Rails CMS&apos;s with Flex front-ends, and this works wonderfully).  However, I find myself often needing to leave the confines of RESTful controllers whenever I need to do something.....well, interesting.&lt;br/&gt;&lt;br/&gt;To illustrate (with a very basic example), let&apos;s look at reporting interfaces.  A basic report takes some user inputs and returns an output.  We&apos;re really talking about two actions.  I suppose you could squeeze this into the &apos;new&apos; and &apos;create&apos; actions, but really, this is bastardizing the tenets of REST.  Furthermore, I have no need whatsoever for edit/update/destroy/index/show.  I suppose this is handled by a combination of RESTful and default routes.  &lt;br/&gt;&lt;br/&gt;But I really was happy to see someone else put this out there, as it has bothered me a bit as well.  I guess I just feel that there&apos;s a lot of hoopla around the idea of &amp;quot;everything should be RESTful&amp;quot; that seems to be a little misguided.  Then again, maybe I&apos;m just misinterpreting the community consensus....&lt;br/&gt;&lt;br/&gt;</content>
  </entry>
  <entry>
    <author>
      <name>Fadhli</name>
    </author>
    <id>urn:uuid:add9216a-fcf0-4b23-b439-ec1d5792bb4c</id>
    <published>2008-09-07T22:19:54-04:00</published>
    <updated>2008-09-07T22:19:54-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Fadhli</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5191" rel="alternate" type="text/html"/>
    <content type="html">I don&apos;t think Rails prevents you from doing unRESTful routings. You can still fall back to what you use to do. </content>
  </entry>
  <entry>
    <author>
      <name>tabrez</name>
    </author>
    <id>urn:uuid:32433d3b-6f3e-4657-b5c3-677c5299a713</id>
    <published>2008-09-09T08:05:55-04:00</published>
    <updated>2008-09-09T08:05:55-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by tabrez</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5192" rel="alternate" type="text/html"/>
    <content type="html">RESTful routing in Ruby on Rails breaks:&lt;br/&gt;a)Convention over Configuration principle and&lt;br/&gt;b)Don&apos;t Repeat Yourself principle. &lt;br/&gt;&lt;br/&gt;RESTful URLs are good but someone needs to come up with a smarter routing implementation that uses route mapping conventions.&lt;br/&gt;&lt;br/&gt;Current implementation of RESTful routing is particularly severe on beginner Rails programmers.</content>
  </entry>
  <entry>
    <author>
      <name>Seth</name>
    </author>
    <id>urn:uuid:6c9ae585-9869-4b54-9a69-f9b5f625e8a7</id>
    <published>2008-09-09T21:27:11-04:00</published>
    <updated>2008-09-09T21:27:11-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by Seth</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5193" rel="alternate" type="text/html"/>
    <content type="html">I totally agree with your thoughts on this.&lt;br/&gt;&lt;br/&gt;REST is overhyped. It&apos;s annoying that most of the Rails community blindly follows the newest convention without even asking why.&lt;br/&gt;&lt;br/&gt;My two major apps are non-REST and doing just fine.</content>
  </entry>
  <entry>
    <author>
      <name>bryanl</name>
    </author>
    <id>urn:uuid:f218322f-6e88-427f-9915-8e828be172c8</id>
    <published>2008-09-12T07:09:44-04:00</published>
    <updated>2008-09-12T07:09:44-04:00</updated>
    <title type="html">Comment on "Ruby on Struts" by bryanl</title>
    <link href="http://paulbarry.com/articles/2008/09/06/ruby-on-struts#comment-5196" rel="alternate" type="text/html"/>
    <content type="html">I like REST and RESTful routing.  You can&apos;t shoe horn every problem on top of if it, so you can choose where you want to me.&lt;br/&gt;&lt;br/&gt;As for admin_path(&amp;quot;/comments/new&amp;quot;, :article_id =&amp;gt; @article)... this isn&apos;t very clear.  And worse you now have a hard coded path in your application.  </content>
  </entry>
  </feed>