When was the parse method added to the Time class?

Hi there, I’ve been running a particular script for a few years now
and only just noticed that it crashes on one particular system. (I
don’t use that system very often and have run that script on it very
rarely.)

The offending code/line in question uses the Time.parse method.

I opened a CMD prompt and tried the following:

irb(main):001:0> d = ‘03/13/09 14:52’
=> “03/13/09 14:52”
irb(main):002:0> Time.parse( d )
NoMethodError: undefined method `parse’ for Time:Class
from (irb):2

irb(main):010:0> Time.methods.include? ‘parse’
=> false

This system has Ruby 184-20 installed. I know that version 186-25 and
up have the Time.parse method and the script works fine. However, I
want to know what version of Ruby first included that method so that I
can identify the minimum requirements to run the script.

Can anyone tell me how I might find out what version/release of Ruby
first included that method?

Please let me know. Thanks.

Paul.

Paul wrote:

=> “03/13/09 14:52”
want to know what version of Ruby first included that method so that I
can identify the minimum requirements to run the script.

Can anyone tell me how I might find out what version/release of Ruby
first included that method?

Please let me know. Thanks.

Paul.

It’s not a ruby version issue.

Confusingly, Time.parse is only available after explicitly requiring
‘time’:

irb(main):001:0> Time.parse “1:23”
NoMethodError: undefined method `parse’ for Time:Class
from (irb):1
irb(main):002:0> require ‘time’
=> true
irb(main):003:0> Time.parse “1:23”
=> Fri Mar 13 01:23:00 -0700 2009

Joel wrote:

=> Fri Mar 13 01:23:00 -0700 2009

Hmm, okay. I get that. So why does the “Time.methods.include?
‘parse’” line work on all the other systems except for one? I’m not
specifically requiring that class on the other machines.

As a test, I uninstalled Ruby 184 and installed Ruby 186 and I get the
same effect on this computer – i.e. the Time.parse method is still
not there by default. Weird. Could another Ruby gem be causing the
problem?

Paul.

As a test, I uninstalled Ruby 184 and installed Ruby 186 and I get the
same effect on this computer – i.e. the Time.parse method is still
not there by default. Weird. Could another Ruby gem be causing the
problem?

Okay, I uninstalled Ruby again and reinstalled it. This time I wrote
a one-line script with the above Time.parse code so that I could run
it anytime.

I installed all the gems I needed and the Time.parse method is always
there and works as expected.

The one thing I did the last time that I didn’t do this time was run
the command:

gem update --system

If I run the above, then the Time.parse method will no longer be
available by default. It looks like there is something in that update
that kills the parse method for the Time class.

I won’t be updating my rubygems again unless there is some compelling
reason for me to.

At least now I know what caused this system to stop running that
script.

Paul Carvalho wrote:

available by default. It looks like there is something in that update
that kills the parse method for the Time class.

I won’t be updating my rubygems again unless there is some compelling
reason for me to.

At least now I know what caused this system to stop running that
script.

Probably the newer version of one of your gems stopped including the
Time library.

-Justin