"soemthing".pluralize/at/from/... -> NoMethodError

Hello,

I’ve been wondering about this for some time now… Why don’t any of the
following methods work: string.at/from/first/last/humanize/pluralize ?
IRB returns:

NoMethodError: undefined method `pluralize’ for “something”:String

You can try it yourself (also by using web IRB from here:
http://tryruby.hobix.com/)

Those methods are mentioned in “Agile Development with Rails” for
example… you can also see people using them on Google code search.

However, they are not mentioned in documentation:
http://ruby-doc.org/core/classes/String.html

This is funny. Also… string.to_json and string.to_yaml are mentioned in
the agile book, but don’t work either.

This example doesn’t go through in IRB:

For demo purposes, create a Ruby structure with two attributes

Rating = Struct.new(:name, :ratings)
rating = Rating.new(“Rails” , [ 10, 10, 9.5, 10 ])

and serialize an object of that structure two ways…

puts rating.to_json #=> [“Rails”, [10, 10, 9.5, 10]]
puts rating.to_yaml #=> — !ruby/struct:Rating
name: Rails
ratings:

  • 10
  • 10
  • 9.5
  • 10

Can you help me understand all this? Thank you!

David

David,

Those are not standard Ruby methods. They are defined in the Rails
ActiveSupport library, and thus can only be accessed from within Rails
applications (or other applications that explicitly require
ActiveSupport).

  • Jamis

David K. wrote:

Hello,

I’ve been wondering about this for some time now… Why don’t any of the
following methods work: string.at/from/first/last/humanize/pluralize ?
IRB returns:

NoMethodError: undefined method `pluralize’ for “something”:String

You can try it yourself (also by using web IRB from here:
http://tryruby.hobix.com/)

Those methods are mentioned in “Agile Development with Rails” for
example… you can also see people using them on Google code search.

However, they are not mentioned in documentation:
http://ruby-doc.org/core/classes/String.html

This is funny. Also… string.to_json and string.to_yaml are mentioned in
the agile book, but don’t work either.

This example doesn’t go through in IRB:

For demo purposes, create a Ruby structure with two attributes

Rating = Struct.new(:name, :ratings)
rating = Rating.new(“Rails” , [ 10, 10, 9.5, 10 ])

and serialize an object of that structure two ways…

puts rating.to_json #=> [“Rails”, [10, 10, 9.5, 10]]
puts rating.to_yaml #=> — !ruby/struct:Rating
name: Rails
ratings:

  • 10
  • 10
  • 9.5
  • 10

Can you help me understand all this? Thank you!

David

Ok, that explains everything - thank you very much Jamis, I appreciate
it!

Jamis B. wrote:

David,

Those are not standard Ruby methods. They are defined in the Rails
ActiveSupport library, and thus can only be accessed from within Rails
applications (or other applications that explicitly require
ActiveSupport).

  • Jamis

Hmm, when in IRB, I enter:

irb(main)> require ‘rubygems’
=> true
irb(main)> require_gem ‘activesupport’
=> true

but I still get NoMethodError when doing “something”.pluralize … now
sure, I think it worked 2 days ago…

What am I missing?
thank you

On 1/15/07, David K. [email protected] wrote:

ah now I know why… this works:

irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require ‘active_support’
=> true

interesting… can someone explain what is happening?
so require_gem is no good in irb … why it doesn’t report an error?

Yes. require_gem is deprecated. Don’t use it if at all possible.

-austin

On 1/15/07, David K. [email protected] wrote:

ah now I know why… this works:

irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require ‘active_support’
=> true

interesting… can someone explain what is happening?
so require_gem is no good in irb … why it doesn’t report an error?

require_gem is “good”; it just isn’t doing what you think it does.

Here’s a good discussion of the issue:
http://redhanded.hobix.com/inspect/autorequireIsBasicallyGoneEveryone.html

ah now I know why… this works:

irb(main):001:0> require ‘rubygems’
=> true
irb(main):002:0> require ‘active_support’
=> true

interesting… can someone explain what is happening?
so require_gem is no good in irb … why it doesn’t report an error?

thank you

David K. wrote:

Hmm, when in IRB, I enter:

irb(main)> require ‘rubygems’
=> true
irb(main)> require_gem ‘activesupport’
=> true

but I still get NoMethodError when doing “something”.pluralize … now
sure, I think it worked 2 days ago…

What am I missing?
thank you

Hi –

On Sun, 14 Jan 2007, David K. wrote:

http://tryruby.hobix.com/)

Those methods are mentioned in “Agile Development with Rails” for
example… you can also see people using them on Google code search.

However, they are not mentioned in documentation:
http://ruby-doc.org/core/classes/String.html

This is funny. Also… string.to_json and string.to_yaml are mentioned in
the agile book, but don’t work either.

Those methods are add-ons that come with Rails. They’re not part of
standard Ruby.

David

On 1/14/07, Jamis B. [email protected] wrote:

You can still use ActiveSupport without Rails. Just

gem install ActiveSupport

and then require ‘active_support’ in your program and pluralize away!

Nate

I think you must require ‘rubygems’ after ‘active_support’.

I wanted say:
“you must require ‘rubygems’ before ‘active_support’” (s/after/before)
:-p