Bug #10758
closedundefined method `year' for nil:NilClass
Description
I am facing this error only in Ruby 2.2.0 as I recently upgraded to latest Ruby 2.2.0
Here is the console log
2.2.0 :008 > Time.zone.parse("2014-12-29 20:16:32 -0400")
NoMethodError: undefined method `year' for nil:NilClass
from /.rvm/gems/ruby-2.2.0/gems/activesupport-3.2.18/lib/active_support/values/time_zone.rb:275:in `parse'
from (irb):8
from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands/console.rb:47:in `start'
from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands/console.rb:8:in `start'
from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands.rb:41:in `<top (required)>'
Whereas same works fine in Ruby 2.1.2
2.1.2 :001 > Time.zone.parse("2014-12-29 20:16:32 -0400")
=> Tue, 30 Dec 2014 00:16:32 UTC +00:00
Am I doing something wrong here? Do I need to use any other gem to make this work. Some 700 specs fail for my project after upgrading to Ruby 2.2.0 due to this undefined method 'year' errors.
Would highly appreciate your immediate help in this regard. Thanks in advance.
Updated by Hanmac (Hans Mackowiak) almost 10 years ago
try to use newer activesupport version, it seems to be fixed in newer versions
Updated by hsbt (Hiroshi SHIBATA) almost 10 years ago
- Status changed from Open to Third Party's Issue
You should report rails/rails repository in github at first
Updated by rohandaxini (Rohan Daxini) almost 10 years ago
Hiroshi SHIBATA wrote:
You should report rails/rails repository in github at first
Sorry but I did not know this is Rails issue. As the same code works fine on Ruby 2.1.2 but throws error on Ruby 2.2.0 despite keeping same Active record.
Updated by Anonymous almost 10 years ago
Could the behavior of the following code have changed between Ruby 2.1.2 and Ruby 2.2.0?
In the Rails 3.2.21 with Ruby 2.1.2 version of activesupport the following works:
def parse(str, now=now)
With Ruby 2.2.0 it no longer works as the now on the right side is evaluated as nil. In the latest version of activesupport on master on github that line has changed to the following:
def parse(str, now=now())
With 2.2.0 is it now necessary to use the () when referencing a function with the same name a default value assignment?
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Description updated (diff)