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?
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?
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.