This project is archived and is in readonly mode.

#2399 ✓wontfix
Paulo Pereira

Incorrect inflectors for 'business' or '*ness'

Reported by Paulo Pereira | April 2nd, 2009 @ 11:24 AM | in 2.x

Hi there.

I'm using activesupport 2.3.2, and found a simple inflector error.


>> require "activesupport"
=> true
>> "business".singularize
=> "busines"
>> "madness".singularize
=> "madnes"

But plurals and handled nicely.


>> "business".pluralize
=> "businesses"
>> "madness".pluralize
=> "madnesses"

Comments and changes to this ticket

  • Michelangelo Altamore

    Michelangelo Altamore April 3rd, 2009 @ 02:00 PM

    • Tag set to activesupport, inflections, inflector

    Paulo you're right. I've found that singular words ending in 'ess' like:

    business, address, express, dress, press

    are singularized wrongly since the current inflections do not contain a proper rule. I propose to include such rule, that you can find attached along with tests.

    Example:

    Before patch

    "address".singularize => "addres" "address".classify => "Addres"

    After patch "Address"

    "address".singularize => "address" "address".classify => "Address"

  • José Valim

    José Valim May 13th, 2009 @ 09:02 PM

    1. Address is a quite common case and patch works.
  • CancelProfileIsBroken

    CancelProfileIsBroken May 17th, 2009 @ 01:37 PM

    • State changed from “new” to “wontfix”

    Rails has a longstanding policy of not taking further inflector patches. Use an initializer in your application instead.

  • Michelangelo Altamore

    Michelangelo Altamore May 24th, 2009 @ 11:02 PM

    Hello Mike,
    thank you for your response. In case of erratic behaviour of the inflector,
    that's enough to add a rule to the inflector initializer and stay neat and
    simple.
    Just for clarity, the problem raised by Paulo will be solved by adding the
    following:

    ActiveSupport::Inflector.inflections do |inflect|

    inflect.singular(/ess$/i, 'ess')
    

    end

    to the file:

    config/initializers/inflections.rb

    Thank you.

  • Jeff Kreeftmeijer

    Jeff Kreeftmeijer November 7th, 2010 @ 04:55 PM

    • Tag cleared.
    • Importance changed from “” to “Low”

    Automatic cleanup of spam.

  • Christopher Thompson

    Christopher Thompson November 25th, 2010 @ 05:02 PM

    Another workaround. Instead of:

    s = 'Address'
    s.singularize # 'Addres'
    

    Do:

    s = 'Address'
    s.pluralize.singularize # 'Address'
    

    Note that this affects the behaviour of .classify as well, but still s.pluralize.classify will work around it.

  • Christopher Thompson

    Christopher Thompson November 25th, 2010 @ 05:05 PM

    In ticket #6057, Andrés Mejía asked:

    "Rails has a longstanding policy of not taking further inflector patches."

    May I ask what is the reason behind this?

    I'd also like to know the answer for this. I can imagine that patches tend to break other cases, so maybe that's the reason. But for such a long-standing problem that affects Rails 2.3.x and 3.x, I'm surprised to still see this as an issue.

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

Attachments

Referenced by

Pages