From: Rick DeNatale Date: 2010-12-10T21:21:15+09:00 Subject: Re: Ruby bug in singularizing "leaves" On Fri, Dec 10, 2010 at 6:04 AM, Vineeth Pradhan wrote: > Hello, > > Has anyone noticed this bug in ruby? in script/console, try > >>> "leave".pluralize > => "leaves" >>> > >>> "leaves".singularize > => "leafe" >>> > >>> "leaf".pluralize > => "leafs" >>> > First, String#singularize and String#pluralize aren't part of the Ruby language, they are extensions made by the activesupport gem which is part of Rails. Rails uses them pretty extensively to implement "convention over configuration" things like having a PeopleController to manage a collection of Person resources. Second, although activesupport covers a good part of the English language, there are some gaps, apparently you've found one of these. Third, the Rails core team won't fix these gaps because they might break existing Rails apps. Finally, active support allows YOU to change how these methods work for such exceptions for YOUR application. For example: ruby-1.8.7-p302 > "leaf".pluralize => "leafs" ruby-1.8.7-p302 > "leaves".singularize => "leafe" ruby-1.8.7-p302 > ActiveSupport::Inflector.inflections do |inflect| ruby-1.8.7-p302 > inflect.irregular "leaf", "leaves" ruby-1.8.7-p302 ?> end => ruby-1.8.7-p302 > "leaf".pluralize => "leaves" ruby-1.8.7-p302 > "leaves".singularize => "leaf" HTH -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Github: http://github.com/rubyredrick Twitter: @RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale